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

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

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

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

2回答

505閲覧

2つの二次元配列を比較する

YukimasaYajima

総合スコア10

Java

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

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

0クリップ

投稿2019/11/07 23:58

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**

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

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

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

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

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

maisumakun

2019/11/08 00:04

「入力がA1の場合のみifの中に入り込ませたい」とありますが、それと2つ確保してある2次元配列はどのように関係しますでしょうか。
YukimasaYajima

2019/11/08 00:14

二次元配列shipの方で、表示を司ろうと思っています
azuapricot

2019/11/08 00:23

[なにを入力しても正になってifに入る」 じゃあ、ifの手前でSystem.out.println()を使って guess[row][col] の中身と、 ship[0][0]の中身を見てみましたか? デバッグはしましたか?
YukimasaYajima

2019/11/08 00:28

どうでした、 guessでは0の表示だったのですが、 shipでは何もイニシャライズしてないから?println(ship[0][0])では空白でした。 これは自動的に0に変換ということですか?
azuapricot

2019/11/08 00:31

何もしてないという理解はあるのですね、 比較対象となる配列に中身を入れないで 空っぽと空っぽで比較してますが、 これは何を意図してるのですか? それとも、質問者さん的にはもう配列に中身は入っている想定、だったのですか?
YukimasaYajima

2019/11/08 00:40

そうですね、たしかにイニシャライズするべきですね、 char[][] ship = new char[6][6]; ship[0][0] = 'A1'; とできないのはなぜですか?
maisumakun

2019/11/08 00:47 編集

Javaの文字リテラルには1文字しか入りません。'A1'の時点で文法エラーです。
azuapricot

2019/11/08 00:47

’A1’ はchar型ではありません。 基礎からお勉強した方がよいのではないでしょうか。
YukimasaYajima

2019/11/08 00:50

打ち込んでいる時点で分かっていましたが、再質問するために、しました。
azuapricot

2019/11/08 01:27

char[][] ship = new char [6][6]; ship[0][0] = 'x'; System.out.println(ship[0][0]); ↓ 出力結果:x できますけど・・・
azuapricot

2019/11/08 01:28

シングルクォートで囲い忘れてるとか?そんなわけないか
YukimasaYajima

2019/11/08 01:31

脳みそが把握できてないことがちょっと多すぎるんで少し休憩しまーすw
YukimasaYajima

2019/11/08 01:33

プログラムの意図を分かりやすくするために質問し直しますね
guest

回答2

0

入力がA1の場合のみifの中に入り込ませたいのですが、なにを入力しても正になってifに入ってしまいす。==で比べるのが良くないのですか?

newで作ったばかりの数値配列は、初期化子を指定しない場合すべてゼロクリアされています。なので、アクセスできるならどこでもguess[row][col]は0ですし、もちろんship[0][0]も0なので、条件は常に成立します。

投稿2019/11/08 00:23

maisumakun

総合スコア145183

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

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

maisumakun

2019/11/08 00:24

空の配列の中身を調べているので、何をしたいのか意図がつかめません。
YukimasaYajima

2019/11/08 00:30

なるほど、 すみません初期化をしていない場合、ということですか?
YukimasaYajima

2019/11/08 00:32

shipの有るところを、guessで指定したら、if分の中に入り込ませたいです
maisumakun

2019/11/08 00:33

そうですね、上のコードでは配列の中身を自動初期化に任せているので、全部0になっています。 (Javaの場合、「未初期化のままコードが進む」ということは基本的にないです。ローカル変数を代入する前に使おうとするとコンパイルエラーになりますし、フィールドや配列要素は0あるいはnullとしてデフォルトの初期化が行われます)
maisumakun

2019/11/08 00:34

> shipの有るところを、guessで指定したら、if分の中に入り込ませたいです では、それを意図したコード(shipやguessへの値設定も含む)を書いてください。
guest

0

Java

1int [][] guess = new int [6][6]; 2char [][] ship = new char [6][6]; 3 4int i = 1; 5for (int[] num : guess) { 6 System.out.println(i + "番目のguessの中身↓"); 7 for (int num2 : num) { 8 System.out.println(num2); 9 } 10 i++; 11} 12 13int j = 1; 14for (char[] char1 : ship) { 15 System.out.println(j + "番目のshipの中身↓"); 16 for (char char2 : char1) { 17 System.out.println(char2); 18 } 19 j++; 20}

↑の出力結果

1番目のguessの中身↓ 0 0 0 0 0 0 2番目のguessの中身↓ 0 0 0 0 0 0 3番目のguessの中身↓ 0 0 0 0 0 0 4番目のguessの中身↓ 0 0 0 0 0 0 5番目のguessの中身↓ 0 0 0 0 0 0 6番目のguessの中身↓ 0 0 0 0 0 0 1番目のshipの中身↓ 2番目のshipの中身↓ 3番目のshipの中身↓ 4番目のshipの中身↓ 5番目のshipの中身↓ 6番目のshipの中身↓

入力がA1の場合のみifの中に入り込ませたい

とありますが、↑で出力した通り、質問者さんはまだどこにも Aと1という値を配列に入れていません。
ということはどちらの配列もまぁ空っぽのままです。

ということは現時点でのコードではいつまでたってもやりたいことはできません。

配列に値を入れないと何も始まりません。

投稿2019/11/08 00:46

azuapricot

総合スコア2341

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

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

YukimasaYajima

2019/11/08 00:48

guess[row][col]でA1を入れたと思っていたのですが、入っていないということは、どのようにすればいいか教えてくれますでしょうか
maisumakun

2019/11/08 00:52

> guess[row][col]でA1を入れたと思っていたのですが どの処理で入ったと考えていました?
YukimasaYajima

2019/11/08 00:55

guess[row][col] 違うのであれば指摘くれればいいです
azuapricot

2019/11/08 00:56

if(guess[row][col] == ship[0][0]){ 質問者さん的にはここでguessに row と col を入れてるつもりだったんじゃないでしょうか。
azuapricot

2019/11/08 00:57

多分質問者さんがわかってないのは、二次元配列への値の入れ方じゃないですか?
YukimasaYajima

2019/11/08 01:18

2つの配列のメモリに記憶されている場所同士を比較することをしようとしてました。 B1 is a hit You sunk the Patrol Boat ENEMY 1 2 3 4 5 6 ___ ___ ___ ___ ___ ___ A |_X_|_O_|___|___|___|___| B |_X_|___|___|___|___|___| C |___|___|___|___|___|___| D |___|___|___|___|___|___| E |___|___|___|___|___|___| F |___|___|___|___|___|___| Please enter a guess in the form 'B5':
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問