
例えば
55555
55505
55555
のような二次元配列があったときに、
値が0の場合、十字の方向に0に置き換えるプログラムを作りたいです。
55505
00000
55505
しかし、現在のプログラムでは
55500
00000
00000
このようになってしまいます。
System.out.println(i);
これは内容をチェックするために書いていますが、
私の想定ではiは1になるのですが、
1と2が出力されます。
この2がなぜ入るのかが分かりません。。。
どのように修正したらよいか、ご教示いただきたく存じます。
よろしくお願いいたします。
public class test {
public static void main(String[] args) {
int[][] matrix = new int[][] {
{4, 4, 4, 4, 4},
{4, 4, 4, 0, 4},
{4, 4, 4, 4, 4},
};
//新しい配列を用意し置き換える
int[][] changeMatrix = matrix;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) {
System.out.println(i);
for (int k = 0; k < changeMatrix.length; k++) {
int l = j;
changeMatrix[k][l] = 0;
}
for (int m = 0; m < changeMatrix[0].length; m++) {
int n = i;
changeMatrix[n][m] = 0;
}
}
}
}
//変更後の二次元配列を出力
System.out.println("変更後");
for (int i = 0; i < changeMatrix.length; i++) {
for (int j = 0; j < changeMatrix[0].length; j++) {
System.out.print(changeMatrix[i][j]);
}
System.out.println();
}
}
}
No.1ベストアンサー
- 回答日時:
int[][] changeMatrix = matrix;
代入してもコピーが作られるわけではなく
changeMatrixとmatrixが同じ配列データを
参照するようになるだけのため
changeMatrixを変えると、matrixも変わってしまいます。
ですので、以下のように新しい配列を作る必要があります。
int[][] changeMatrix = new int[matrix.length][];
for(int i = 0; i < matrix.length; i++) {
changeMatrix[i] = java.util.Arrays.copyOf(matrix[i], matrix[i].length);
}
できました!!!
別の配列として扱えるものだと思っておりましたので
大変勉強になりました。
大変助かりました、ありがとうございます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
countに実行した回数をいれたい...
-
プログラムの違いを教えて下さ...
-
javaのリターン文についての質...
-
論理演算子”||”またはの入力方法
-
3桁のカウンター表示
-
コインのプログラムが作れずに...
-
java キーボード入力された値の...
-
java 2次元配列
-
javaで2重forループを使い 123 ...
-
java 入力 3 4 3 出力 ABC DEFG...
-
フローチャートが作れず、困っ...
-
エラー(互換性の無い型)
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
javaで入力した数字の順番を記...
-
2次元配列の並び替え
-
java プログラム for 文 while ...
-
ファイル出力
-
数値⇒漢数字変換 java
-
総称型ArrayList<E>への参照...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
論理演算子”||”またはの入力方法
-
java キーボード入力された値の...
-
テキストボックスに入力された...
-
JAVAのfor文で困っています。
-
Randomメソッドの確率設定
-
Java 入力した整数値の合計を、...
-
数値⇒漢数字変換 java
-
コマンドライン引数の例外処理...
-
countに実行した回数をいれたい...
-
要素数が10の配列で、乱数0~9...
-
javaが上手くいきません
-
(急いでいます)Javaで3回間違...
-
Java、2の0乗~10乗の表示
-
javaのプログラム
-
配列を逆順させて表示させる方...
-
7つ数字を表示したら改行すると...
-
総称型ArrayList<E>への参照...
-
javaです。 途中まで出来ている...
おすすめ情報