Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 产生乱码输出的if语句_Java_Arrays_If Statement_Multidimensional Array_Boolean - Fatal编程技术网

Java 产生乱码输出的if语句

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

我有一个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 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数组的类名(try
int[].class.toString()
),
System.out.println("(" + i + ";" + j + ")");