java
1import java.util.Scanner; 2public class test 3{ 4 public static void main(String [] args){ 5 Scanner input = new Scanner(System.in); 6 String myGuess = input.nextLine(); 7 8 int row = myGuess.charAt(0) - 'A'; 9 int col = myGuess.charAt(1) - '1'; 10 11 int [][] guess = new int [6][6]; 12 char [][] ship = new char [6][6]; 13 14 if(guess[row][col] == ship[0][0]){ 15 System.out.println("valid"); 16 } 17 } 18} 19 20```**入力がA1の場合のみifの中に入り込ませたいのですが、なにを入力しても正になってifに入ってしまいす。==で比べるのが良くないのですか? 21**
「入力がA1の場合のみifの中に入り込ませたい」とありますが、それと2つ確保してある2次元配列はどのように関係しますでしょうか。
二次元配列shipの方で、表示を司ろうと思っています
[なにを入力しても正になってifに入る」
じゃあ、ifの手前でSystem.out.println()を使って guess[row][col] の中身と、 ship[0][0]の中身を見てみましたか?
デバッグはしましたか?
どうでした、
guessでは0の表示だったのですが、
shipでは何もイニシャライズしてないから?println(ship[0][0])では空白でした。
これは自動的に0に変換ということですか?
何もしてないという理解はあるのですね、
比較対象となる配列に中身を入れないで 空っぽと空っぽで比較してますが、
これは何を意図してるのですか?
それとも、質問者さん的にはもう配列に中身は入っている想定、だったのですか?
そうですね、たしかにイニシャライズするべきですね、
char[][] ship = new char[6][6];
ship[0][0] = 'A1';
とできないのはなぜですか?
Javaの文字リテラルには1文字しか入りません。'A1'の時点で文法エラーです。
’A1’ はchar型ではありません。
基礎からお勉強した方がよいのではないでしょうか。
打ち込んでいる時点で分かっていましたが、再質問するために、しました。
いやできました
char[][] ship = new char [6][6];
ship[0][0] = 'x';
System.out.println(ship[0][0]);
↓
出力結果:x
できますけど・・・
シングルクォートで囲い忘れてるとか?そんなわけないか
脳みそが把握できてないことがちょっと多すぎるんで少し休憩しまーすw
プログラムの意図を分かりやすくするために質問し直しますね