Java 产生乱码输出的if语句
我有一个java任务,要求输入一个代码,告诉用户输入一个点(行和列或x和y),程序输出国际象棋“骑士”的所有可能动作Java 产生乱码输出的if语句,java,arrays,if-statement,multidimensional-array,boolean,Java,Arrays,If Statement,Multidimensional Array,Boolean,我有一个java任务,要求输入一个代码,告诉用户输入一个点(行和列或x和y),程序输出国际象棋“骑士”的所有可能动作 package datastructureass1; import java.util.Scanner; public class DataStructureAss1 { public static void main(String[] args) { Scanner cin = new Scanner (System.in); int
package datastructureass1;
import java.util.Scanner;
public class DataStructureAss1 {
public static void main(String[] args) {
Scanner cin = new Scanner (System.in);
int knight[][]= new int [7][7];
System.out.println("Please enter the knight's position starting with rows followed by columns");
int i=cin.nextInt();
int j=cin.nextInt();
i=i+2;
j=j+1;
if (i<=8&&j<=8)
System.out.println( "{"+knight[i]+","+knight[j]+"}");
i= i+2;
j=j-1;
if (i<=8&&j<=8);
System.out.println( "{"+knight[i]+","+knight[j]+"}");
i= i-2;
j=j+1;
if (i<=8&&j<=8);
System.out.println( "{"+knight[i]+","+knight[j]+"}");
i= i-2;
j=j-1;
if (i<=8&&j<=8);
System.out.println( "{"+knight[i]+","+knight[j]+"}");
i= i+1;
j=j+2;
if (i<=8&&j<=8);
System.out.println( "{"+knight[i]+","+knight[j]+"}");
i= i+1;
j=j-2;
if (i<=8&&j<=8);
System.out.println( "{"+knight[i]+","+knight[j]+"}");
i= i-1;
j=j+2;
if (i<=8&&j<=8);
System.out.println( "{"+knight[i]+","+knight[j]+"}");
i= i-1;
j=j-2;
if (i<=8&&j<=8);
System.out.println( "{"+knight[i]+","+knight[j]+"}");
}
}
这是没有意义的,我不知道我在代码中做错了什么 您需要将i和j的加法和减法运算括在括号中,以便只在条件下执行if语句您有一个二维数组,即数组数组数组:
[
[ 0,1,2,3 ...],
[...],
[...]
]
当寻址该数组中的某个位置时,您将得到该位置上的数组,即
int[] knightAtI = knight[i];
由于int[]
数组是一个对象,因此toString()
方法将返回一个引用字符串
因此,您必须使用两个坐标访问字段:
int knightAtIandJ = knight[i][j]
或者将I处的数组转换为字符串:
String knightAtI = Arrays.toString(knight[i])
knight[i]
或knight[j]
将指向数组的内存位置,因为knight
是2D数组。
因此,您必须使用
knight[i][j]
来打印数组的值。代码指向数组而不是数组索引…使用knight[i][j],因此将打印数组的哈希代码而不是实际值
knight[i] <-- it is an array
knight[i][j] <-- it is j element in knight[i] array.
<代码>骑士[i]你的阵法毫无意义。你想用它做什么? 要打印所需的位置,请使用:
System.out.println("(" + i + ";" + j + ")");
大多数if语句在右括号后都有一个分号,因此下一行代码在if语句之外。按照@Amer Qarabsa所说的去做,并且总是把if语句的主体放在大括号内,并且非常小心不要在结束括号和开始大括号之间放分号。你指向的是一个数组而不是数组索引……使用knight[i][j]这怎么有一个向上投票?回答得好。你能解释一下
[I@6ac1abcf
is?它是java.lang.Object
中定义的toString()
的默认实现的输出,它是objectsClassName+@+ObjectsAshCodeAshExString。[I
是基本int数组的类名(tryint[].class.toString()
),
System.out.println("(" + i + ";" + j + ")");