質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

4回答

3221閲覧

JavaのコンソールログでRPG

Yoshinori

総合スコア35

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

5クリップ

投稿2015/07/23 08:28

こんにちは
先日同じ内容を質問させていただきヒントをもらって少しだけ進歩しました。
ですがやはりわからないことが何個もあり、お尋ねしたいです。
質問内容
1、主人公(●)を移動させたら足跡のように●が増えていくのですがそれを解消するにはどうすればいいですか?
2、Mapで海や壁には●は入り込めなくするにはどうすればいいですか?
3、城のマスに●が来た時にマップをcastleにするにはどうすればいいですか?

考えていろいろ試行錯誤したのですがもう限界です・・・。
模範回答を教えてください・・・。
理解したいのでできれば説明もほしいです
お願いだらけで申し訳ありません

Java

1public class RPG { 2 3 public static void main(String[] args) { 4 System.out.println("hで左、kで右、uで上、jでした"); 5 Scanner sc = new Scanner(System.in); 6 7 Map map = new Map(); 8 String hero = "●"; 9 int x = 6; 10 int y = 18; 11 map.main[y][x] = hero; 12 //do~whileを回すためにとりあえず入れている 13 int a = 0; 14 do { 15 String temp = map.main[y][x]; 16 map.main[y][x] = hero; 17 18 19 //Map 20 for(int i = 0; i < map.main.length; i++){ 21 for(int j = 0; j < map.main[0].length; j++){ 22 if(j % 20 == 0){ 23 System.out.println(); 24 }else { 25 System.out.print(map.main[i][j]); 26 } 27 } 28 } 29 30 31 System.out.println(); 32 System.out.println("下に入力"); 33 String action = sc.next(); 34 35 switch(action){ 36 37 case "h": 38 x--; 39 break; 40 41 case "k": 42 x++; 43 break; 44 45 case "u": 46 y--; 47 break; 48 49 case "j": 50 y++; 51 break; 52 53 default: 54 break; 55 } 56 57 58 59 }while( a == 0); 60 61} 62} 63

Java

1public class Map { 2 String[][] main = {{"海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海"}, 3 {"海","海","山","山","山","山","山","山","山","山","山","山","山","草","草","草","草","草","海","海"}, 4 {"海","山","山","山","山","山","山","山","山","山","山","山","草","草","草","草","草","草","草","海"}, 5 {"海","山","山","山","山","山","山","山","山","山","草","草","草","草","草","草","草","草","草","海"}, 6 {"海","山","山","山","山","山","山","草","草","草","草","草","草","草","草","草","草","草","草","海"}, 7 {"海","森","森","森","森","森","森","森","森","森","草","草","草","草","草","草","草","草","草","海"}, 8 {"海","森","森","森","森","森","森","森","森","森","森","草","草","草","草","草","草","草","草","海"}, 9 {"海","森","森","森","森","森","森","森","森","森","草","草","草","草","草","草","草","草","草","海"}, 10 {"海","草","森","森","森","森","森","森","森","森","草","草","草","草","草","草","草","草","草","海"}, 11 {"海","草","草","草","草","草","草","草","草","草","草","草","草","草","草","草","草","草","草","海"}, 12 {"海","草","草","草","草","城","草","草","草","草","草","草","草","草","草","草","草","草","草","海"}, 13 {"海","草","草","草","草","道","草","草","草","草","草","草","草","草","草","草","森","森","森","海"}, 14 {"海","草","草","草","草","道","草","草","草","草","草","草","草","草","草","森","森","森","森","海"}, 15 {"海","草","草","草","草","道","草","草","草","草","草","草","草","草","草","草","森","森","森","海"}, 16 {"海","草","草","草","道","道","道","道","道","道","道","道","道","街","草","草","草","草","草","海"}, 17 {"海","草","草","草","道","草","草","草","草","草","草","草","草","草","草","草","草","草","草","海"}, 18 {"海","草","草","草","道","草","草","草","草","草","草","草","草","草","草","草","草","草","草","海"}, 19 {"海","草","草","草","道","草","草","草","草","草","草","草","草","草","草","草","草","草","草","海"}, 20 {"海","海","草","道","道","道","草","草","草","草","草","草","草","草","草","草","草","草","海","海"}, 21 {"海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海","海"}}; 22 23 String[][] town = {{"出","出","出","出","出","出","出","出","出","出"}, 24 {"出","草","草","草","草","草","草","草","草","出"}, 25 {"出","草","武","草","草","草","草","道","草","出"}, 26 {"出","草","草","草","草","草","草","草","草","出"}, 27 {"出","草","草","草","草","草","草","草","草","出"}, 28 {"出","草","防","草","草","草","草","宿","草","出"}, 29 {"出","草","草","草","草","草","草","草","草","出"}, 30 {"出","草","草","草","草","草","草","草","草","出"}, 31 {"出","草","草","草","草","草","草","草","草","出"}, 32 {"出","出","出","出","出","出","出","出","出","出"}}; 33 34 35 String[][] castle = {{"壁","壁","壁","壁","壁","壁","壁","壁","壁","壁"}, 36 {"壁","壁","壁","壁","王","壁","壁","壁","壁","壁"}, 37 {"壁","道","道","道","道","道","道","道","道","壁"}, 38 {"壁","道","道","道","道","道","道","道","道","壁"}, 39 {"壁","道","壁","道","道","道","道","壁","道","壁"}, 40 {"壁","道","道","道","道","道","道","道","道","壁"}, 41 {"壁","道","道","道","道","道","道","道","道","壁"}, 42 {"壁","道","壁","道","道","道","道","壁","道","壁"}, 43 {"壁","道","壁","道","道","道","道","壁","道","壁"}, 44 {"壁","壁","壁","壁","出","出","壁","壁","壁","壁"}}; 45 46 47} 48

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

すごい・・・
なかなか面白い試みですね。

1.足跡の様に残ってしまうのは、mapの中身を書き換えてしまっているので
前回書き換えた情報がmapの中に残ってしまっているためですね。
なので、mapの値を書き換えるのではなく、mapを出力する中で
座標がキャラクターの座標なら、●を出す。
という風にしてあげればいいです。

java

1 for (int i = 0; i < map.main.length; i++) { 2 for (int j = 0; j < map.main[0].length; j++) { 3 if (j % 20 == 0) { 4 System.out.println(); 5 } else if(i == y && j == x) { 6 System.out.print(hero); 7 } else { 8 System.out.print(map.main[i][j]); 9 } 10 } 11 }

こんな感じですね。で、map.main[y][x] = hero;としている個所は削除で。

2.行けない場所を作りたいのであれば、キーを入力した後、座標をそのまま修正するのではなく
行こうとしている場所がなんなのかを取得して、NGだったら動かさない、とすれば行けます。
switch(action)の中でtempXやtempYを作って、map[x][tempY]が"海"か"壁"なら、yは変えずに
メッセージを出す。 という感じでやってみてください。

3.2と同じやり方で次に行こうとしている場所はわかるはずなので、それが"城"だったら
mapをcastleにする、とすればいけます。

すごく面白い試みなので頑張ってください。

あと、一通り動くようになったら、是非オブジェクト化を考えて作り直してみてください。

投稿2015/07/23 08:50

MakotoMiyazaki

総合スコア297

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yoshinori

2015/07/23 10:05

回答ありがとうございます 私が考えたのではなく学校の課題です・・・。 ずっと考えてたのですがわけがわからず提出が月曜日なので焦ってます・・・。 以下のように書き変えたのですがやはりうまくいきません・・・。 import java.util.Scanner; public class RPG { public static void main(String[] args) { System.out.println("hで左、kで右、uで上、jでした"); Scanner sc = new Scanner(System.in); Map map = new Map(); String hero = "●"; int x = 6; int y = 18; for (int i = 0; i < map.main.length; i++) { for (int j = 0; j < map.main[0].length; j++) { if (j % 20 == 0) { System.out.println(); } else if(i == y && j == x) { System.out.print(hero); } else { System.out.print(map.main[i][j]); } } } //do~whileを回すためにとりあえず入れている int a = 0; do { String temp = map.main[y][x]; map.main[y][x] = hero; //Map for(int i = 0; i < map.main.length; i++){ for(int j = 0; j < map.main[0].length; j++){ if(j % 20 == 0){ System.out.println(); }else { System.out.print(map.main[i][j]); } } } System.out.println(); System.out.println("下に入力"); String action = sc.next(); switch(action){ case "h": x--; break; case "k": x++; break; case "u": y--; break; case "j": y++; break; default: break; } }while( a == 0); } }
MakotoMiyazaki

2015/07/23 10:20 編集

これではダメですね。。。。 do / whileの中が変わってないので、コマンド入力して再表示すると同じ現象が起きます。 もう一度、頭の中で処理を整理して、頭の中では動いている、という状態になってから ロジックを組んでみてください。 昔から新人に言っている事なのですが 「書く」→「動かす」→「考える」 ではなく 「考える」→「書く」→「動かす」 です。 頭の中では完璧に「これなら動くぞ!」と思えるまで書かない。 それでも動かなければ、もう一度「動くぞ!」と思えるまで考える。 これを癖付けないと場当たり的なプログラムを書いてしまい バグだらけになってしまいます。
Yoshinori

2015/07/23 10:44

おっしゃる通りです・・・。 ですが一週間考えてもわかりませんでした。 もう時間もありませんので今回だけ答えを教えていただけないでしょうか? 本当にお願いします。
iwamoto_takaaki

2015/07/23 11:10

ヒント、質問のコードと修正後のコードでは、少しだけ挙動が変わっているはずです。 (違う部分だけは、成功しています。) 学校もYoshinoriさんがこの問題が解けると思って出題しているのと同様に、私もきっと解けると思っています。 どうかリラックスして、じっくりと動作を検証してみてください。
Yoshinori

2015/07/23 11:22

回答ありがとうございます 修正後というのは私がコメントのところに書いたものでしょうか?
MakotoMiyazaki

2015/07/23 11:23

Yoshinoriさんは学校で怒られないためにプログラムを学んでいるんでしょうか? プログラマーになりたくて学んでいるんですよね? 何のための課題かもう一度考え直して下さい。 月曜日までまだ3日あります。 もし、ここで答えが聞けて、課題をクリアしても技術者にはなれませんよ? っと説教臭くなってしまいましたが、3日死ぬ気でやれば絶対にできます。 もう一度頭から処理を見直して頑張ってみてください。
Yoshinori

2015/07/23 11:45

日曜日まで死ぬ気でやってみます。 問題ができたかどうかは別として結果は報告したいと思っています(ご迷惑なら控えます) もし日曜日の夜になってもわからなかったときは教えていただけますか? WEBデザイナーのコースなのですがJAVAは必修なので本当に助けてほしいです
MakotoMiyazaki

2015/07/23 12:01

はい。頑張ってみてください。 いい結果報告を楽しみにしてます。 ただ、日曜日に出来ないとしても、答えを教えることはできません。 (それまで解くのを手伝うことなら出来ますが) 必須なのであればそれは目指す職業に 必要な内容だと学校が判断されたんですよね? であれば出来ない=その職業には就けないってことです。 それぐらいの気持ちで、最悪教えてもらえばいいと保険をかけずに 絶対に何とかするという思いで頑張ってください。
iwamoto_takaaki

2015/07/23 13:16

>修正後というのは私がコメントのところに書いたものでしょうか? そうです。 大丈夫、ここまでのコードが書ける人なら落ち着いて見ればバグ潰せます。良い結果まってます。
Yoshinori

2015/07/23 22:57 編集

import java.util.Scanner; public class RPG { public static void main(String[] args) { System.out.println("hで左、kで右、uで上、jでした"); Scanner sc = new Scanner(System.in); Map map = new Map(); String hero = "●"; int x = 6; int y = 18; //do~whileを回すためにとりあえず入れている int a = 0; do { //Mapmain for (int i = 0; i < map.main.length; i++) { for (int j = 0; j < map.main[0].length; j++) { if (j % 22 == 0) { System.out.println(); } else if(i == y && j == x) { System.out.print(hero); } else { System.out.print(map.main[i][j]); } } } System.out.println(); System.out.println("下に入力"); String action = sc.next(); switch(action){ case "h": x--; break; case "k": x++; break; case "u": y--; break; case "j": y++; break; default: break; } //goto Mapcastle if (hero == map.main[10][4]){ a = 5; } }while( a == 0); x = 5; y = 6; do{ //Mapcastle for (int i = 0; i < map.castle.length; i++) { for (int j = 0; j < map.castle[0].length; j++) { if (j % 11 == 0) { System.out.println(); } else if(i == y && j == x) { System.out.print(hero); } else { System.out.print(map.castle[i][j]); } } } System.out.println(); System.out.println("下に入力"); String action = sc.next(); switch(action){ case "h": x--; break; case "k": x++; break; case "u": y--; break; case "j": y++; break; default: break; } }while(a == 5); } } こうすると足跡は消えましたがcastleに移動できません。 if文で行くようにしているのですがどこがおかしいのでしょうか
iwamoto_takaaki

2015/07/24 00:10 編集

まずは、足あと抜けたのおめでとうございます。 下記の2つのprintを追加してテストしてみてください。 (城とヒーローが同じであれば繰り返し処理を抜けています。) //goto Mapcastle System.out.println("城:" + map.main[10][4]); System.out.println("ヒーロー:" + hero); if (hero == map.main[10][4]){ a = 5; } あと、城から出た時に戻ってくるときの処理が大変なので、処理を抜けるより最初の設定を下記のようにして Map map = new Map(); String hero = "●"; String[][] currentMap = map.Main; String mapName = "main"; int x = 6; int y = 18; としておけば、マップの読み込みをcurrentMapとしておけばマップの差し替えが出来るようになります。 マップの切り替えは、 currentMap = map.castle; mapName = "castle"; x = 5; y = 6; でできます。 失敗してから教えたほうが身につくのですが、お疲れのようなので・・・
Yoshinori

2015/07/24 01:28

ありがとうございます この単位を落としたら内定先を断らないといけないので焦ってます....。 いまちょっと出掛けているので帰って組んでみてまた報告させていただきます 本当にありがとうございます
swordone

2015/07/24 02:03

マップ移動の条件がこれのようですが・・・ hero == map.main[10][4] この文は,Stringのheroが指すインスタンスとmap.main[10][4]が指すインスタンスが同じ時のみtrueを返すものです. ところが基本的にheroの座標が移動しているだけで,heroは"●",map.main[10][4]は"城"で変わらないので,絶対にtrueにはなりえません. (参照型に対する"=="の扱い方の説明としては不十分ですが,とりあえず「一致し得ない」ということを理解して下さい) 「城に移動する条件」を考えると「主人公がいる"場所"が城の場所と一致している」ことなので,その「主人公のいる場所」を条件に盛り込む必要があります. つまり,「主人公がいる座標は,マップ上では何なのか?」ということを見なければなりません.
Yoshinori

2015/07/24 05:25

Mapcastleを //goto Mapcastle System.out.println("城:" + map.main[10][5]); System.out.println("ヒーロー:" + hero); if (hero == map.main[10][5]){ a = 5; } にしたのですが切り替わりません。 これはなぜなのでしょうか?
MakotoMiyazaki

2015/07/24 07:44 編集

swordoneさんのコメントをしっかり読んでください。 heroが返す値は"●"。map.main[10][5]が返す値は、"城" です。 なので、Yoshinoriさんが書いているコードは if("●" == "城") { と同じです。 これでは、いつまでたってもaは5にならないですよね? なので、heroのいる位置(x , y)が(10, 5)なら、という条件に書き換えてみてください。 あと、iwamoto_takaakiのコメントも、もうちょっとしっかり読んでください。 aを5に変えるやり方はよくないですよ、ってありますよね? そして、どうすればいいか、細かくロジックも書いてあります。 おそらく、早くなんとかしたくて、今あるロジックをよくわからないけど書き換えて 動かして、駄目だったらちょっと書き換えて動かして、とされているのではないでしょうか? であれば、それは逆に遠回りで、余計に時間がかかります。 なので、一から皆さんのコメントを読み返して まずは紙にどういう手順で作るのかをフローチャートなり箇条書きなりで書き出して その動きをするようにロジックを組む という手順でやってみてください。 そのほうが、確実に近道です。
Yoshinori

2015/07/25 09:12

いわれた通りに箇条書きにしてみたのですが 「主人公がいる座標は,マップ上では何なのか?」 が全くわからずでした。 内定先に電話をしたら「うちではJAVAは使わないから気にしなくていい。留年したり、やめたりしても採用はする」とのことでしたのでもう諦めます。 みなさん本当にありがとうございました。 ご迷惑をおかけしました
swordone

2015/07/25 09:18

ふざけるのも大概にして下さい. 単に「主人公が今どこに立っているのか,その立っている場所は何なのか」というだけの問題ですよ?
Yoshinori

2015/07/25 21:31

卒業がかかっているのでふざけてなどいません その立っている場所という意味が理解できません どんだけ考えても条件式がわかりませんでした 念を押させてもらいますがみなさんに教えていただき私の力不足で解決に至りませんでしたがふざけている気持ちなど一切ないのでご理解ください
ozwk

2015/07/26 00:21

諦めたなら時間に追われずゆっくり取り組めますね^^ さて、hero == map.main[10][5]という条件式ですが、 左辺のheroが保持しているのは「●」という主人公のアイコン情報で、 主人公の位置を一切保持していないことはわかると思います。 方や右辺のmap.main[10][5]ですが、こちらは書き換えないことにしたので、 常に「城」を返すこともわかると思います。 MakotoMiyazakiさんが言っていた if("●" == "城") { と同じです。 とはこういうことです。 では主人公の位置を保存している変数はどれでしょうか? x,yですね。 現在のmapはcurrentMap[][]で表すことにしたのですから 主人公の位置が"草"なのか"道"なのか...は currentMap[x][y]で取得できるということです swordoneさんの言いたいことは多分こういうことです。
swordone

2015/07/26 01:25

これまでのコードの流れからするとcurrentMap[y][x]ですが、その通りです。 あとはその場所が城なのかという判定はcurrentMap[y][x].equals("城")でできます。 (x,y)=(10,5)という条件でもいいのですが、マップの城の位置が変わったときに応用できません。
guest

0

どんなアドバイスが出来るかな、と考えながらコーディングしました。
https://gist.github.com/iwamoto-takaaki/e58aab72ed5db31c1378

残念ながら、使う機会は無いようですが、一応公開します。

投稿2015/07/27 12:31

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

答えそのものではないです。

一週間考えて、それでもできないのなら、
おそらく考え方が効率的でないのかなと思いますので、
考え方の例を書きます。

机上でのステップ実行をおすすめします。
それも、データをもっと小さくし、扱いやすくしてからです。

まずは草だけのMapにします。

lang

1public class Map { 2    String[][] main = { 3 {"草","草","草","草","草"}, 4 {"草","草","草","草","草"}, 5 {"草","草","草","草","草"}, 6  {"草","草","草","草","草"}, 7  {"草","草","草","草","草"}};

town、castleはそのままで良いです。

Mapに合わせて、
xとyの初期値も変えておきましょう。

lang

1        int x = 2; 2        int y = 2;

それから、ノートに手書きでも、エディタなどで書いても良いのですが、
x、yを初期化した次の行から以下を実施します。

0.x、y、map.mainの内容を書く
0.行の内容を頭の中で実行する。
0.実行した結果、何かキー入力が必要なら、適当に決めてそれを書く。
0.実行した結果、画面に何か出力する場合はそれを書く。
0.次の行に進み、1.に戻る。

時間はかかりますが、
これを実施するとどの様に動いているか、
問題が何かを把握できるかと思います。
また、疑問点1についても、どうして●が増えていくのか
分かるのではないでしょうか。

それで問題の原因が分かれば、MakotoMiyazakiさんの
回答の意味も分かるのでは?
と思います。

問題が一つ解消したら、
今度はMapに海、壁をひとつずつ入れてみて、
同様に机上ステップ実行していくと、どこに判定処理を
入れれば良いのかなども分かりそうです。

慣れてくると、
ある程度は頭の中で実行できるようになりますが、
最初は書き出してみると良い、と思います。

投稿2015/07/23 13:04

eripong

総合スコア1546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2015/07/23 13:17

プログラミングの習得は結局 「頭のなかに動作環境を作る」事になると思います。 「脳内動作環境で動かす」→「現実との結果と比べる」→「脳内動作環境を修正する」の 繰り返しで、コードを見て動作がわかるようになります。(多分) で、慣れないうちはeripongさんの回答のように紙とペンを補助に使って動作をシミュレーションするのが 結構効果的だと思います。
guest

0

コメント欄のソースを拝見しましたが、コピペプログラムになっています。
「//Mapmain」と「//Mapcastle」は似たことを繰り返しています。
メソッドに切り出せば、半分くらいの長さになりそうです。

「class RPG」は一枚岩ですが、そろそろメソッドに切り出したい。
たとえば、初期化と、マップ表示と、移動判定の、3つのメソッドに切り出せます。
(ご自分でもキリが良いと感じているから、空白行で仕切っているのでしょうし)

ですから、まずなるべくメソッドへ切り出すことをおすすめします。
期限に追われて余裕もないでしょうが、そのほうが結局は早く完成します。
もし今回はもう見送るとしても、切り出しの習得はいずれ必須でしょう。

元のソースは保存すればいつでも戻れるので、
メソッドの切り出しに挑戦するのをおすすめします。

なぜ、メソッドに分けるのが重要かというと、メソッドのレベルで考えられるからです。
行や命令文のレベルだけで考えていても、直しては詰まり、直しては詰まりのいたちごっこです。

たとえば、「●は入り込めなくする」「マスに●が来た時」は移動判定のメソッドの役割だし、
「マップをcastleにする」はマップ表示のメソッドの役割だと、責任分担をすぐ特定できます。
メソッド化、構造化によって、日本語(要件の言葉)とコードを翻訳しやすくなるのです。

問題を分割して解決するのは、どんな言語や開発手法でも通用する普遍的な定石です。

コピペをメソッドにくくり出して共通化すると、複雑性が減って考えやすくなります。
テストもしやすくなります。それだけで問題は半分解決したようなものです。

(もっとも、Javaで本格的に組むなら、さらにクラスやオブジェクトに切り出すのですが、
本格的なOOPは難しいので、とりあえずは関数(メソッド)への構造化で良いでしょう。)

ご質問されたYoshinoriさんの過去の質問にもお答えしましたが、
JavaScriptのときはfunctionに切り分けられていました。

もしかしたら、Javaのクラスやメソッドを書く手続き(を調べるの)が煩雑で面倒、
と感じられているのかもしれませんが、それだと後にツケを回すことになります。

インデントの対応など、切り出し以外でのコードの書き方はわりとキレイで良いと思います。
切り出し(構造化)をマスターすると飛躍的に伸びるので、がんばってください。

投稿2015/07/24 01:17

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問