私は障害物や空きスペースがある(配列文字列の)フィールドを描きたい。 "+"
は障害物であり、フリースペースはただ""
です。空き領域がある場合は、"*"
に置き換えてください。私はを選択します。その2次元配列の特定の要素は、""
に等しく、それは"1"
に置き換えられます。これらのコードの両方で同じ出力が得られないのはなぜですか?
私の質問は、以下の2つのコードを無視することができる限り長くはありません。ここに要約がありますが、不明な場合は最後までお読みください:
なぜこれらのものは互いに等しいわけではありませんか?
if(field[i][j]==field[5][1]){
System.out.print("1");
}
と
if(i==5 && j==1){
System.out.print("1");
}
最初のコードは動作しません。ここではその特定の配列要素は、私が1
によって置き換えたいfield[5][1]
次のようになります。
public class Test{
public static void main(String[] args){
String[][] field = {{"+" , "+" , "+" , "+" ,"+" , "+" , "+"},
{"+" , "+" , "+" , "+" ,"+" , "" , "+"},
{"+" , "+" , "+" , "+" ,"" , "" , "+"},
{"+" , "+" , "+" , "" ,"" , "+" , "+"},
{"+" , "" , "" , "" ,"+" , "+" , "+"},
{"+" , "" , "+" , "+" ,"+" , "+" , "+"},
{"+" , "+" , "+" , "+" ,"+" , "+" , "+"}};
int x = field.length;
for(int i=0; i<x; i++){
for(int j=0; j<field[i].length; j++){
System.out.print(field[i][j]);
if(field[i][j] != "+"){
if(field[i][j]==field[5][1]){
System.out.print("1");
}
else{
System.out.print("*");
}
}
}
System.out.println("");
}
}
}
Output:
+++++++
+++++1+
++++11+
+++11++
+111+++
+1+++++
+++++++
セカンドコード、必要に応じて動作します。
public class Test{
public static void main(String[] args){
String[][] field = {{"+" , "+" , "+" , "+" ,"+" , "+" , "+"},
{"+" , "+" , "+" , "+" ,"+" , "" , "+"},
{"+" , "+" , "+" , "+" ,"" , "" , "+"},
{"+" , "+" , "+" , "" ,"" , "+" , "+"},
{"+" , "" , "" , "" ,"+" , "+" , "+"},
{"+" , "" , "+" , "+" ,"+" , "+" , "+"},
{"+" , "+" , "+" , "+" ,"+" , "+" , "+"}};
int x = field.length;
for(int i=0; i<x; i++){
for(int j=0; j<field[i].length; j++){
System.out.print(field[i][j]);
if(field[i][j] != "+"){
if(i==5 && j==1){
System.out.print("1");
}
else{
System.out.print("*");
}
}
}
System.out.println("");
}
}
}
Output:
+++++++
+++++*+
++++**+
+++**++
+***+++
+1+++++
+++++++
@Berger no - これらの文字列はすべてリテラルなので、それらを '=='で比較することができます。 –
タイトルに「解決済み」を追加しないでください:回答を受け入れます。 –