Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 二维数组输入不正确_Java_Multidimensional Array - Fatal编程技术网

Java 二维数组输入不正确

Java 二维数组输入不正确,java,multidimensional-array,Java,Multidimensional Array,我在获取分配的二维数组的输入时遇到问题。基本上,我必须创建一个在屏幕上爬行的bug,并写入我们名字的ASCII图像。我们必须从文本文件中获取输入,因此我认为最好的做法是为文件中的每个字符创建一个二维数组,并让它根据每个点中的字符来确定它的功能。但是,它始终显示二维数组具有相同的内容(如下所示) 下面是该类、tester类和txt文件的示例。如何让它显示正确的输入 Bug类 Txt文件: 您看到的是数组对象的内部表示形式(它的“签名”) 如果要打印数组,则需要迭代其元素。因为它是二维的,所以只需对

我在获取分配的二维数组的输入时遇到问题。基本上,我必须创建一个在屏幕上爬行的bug,并写入我们名字的ASCII图像。我们必须从文本文件中获取输入,因此我认为最好的做法是为文件中的每个字符创建一个二维数组,并让它根据每个点中的字符来确定它的功能。但是,它始终显示二维数组具有相同的内容(如下所示)

下面是该类、tester类和txt文件的示例。如何让它显示正确的输入

Bug类 Txt文件:
您看到的是数组对象的内部表示形式(它的“签名”)

如果要打印数组,则需要迭代其元素。因为它是二维的,所以只需对循环使用两个嵌套的

其他问题:

  • 您正在使用
    字符串
    初始化
    扫描仪
    ,但您需要的是使用
    文件
    初始化它。您需要使用文件名创建一个新的
    文件
    对象,并将其传递给
    扫描器
    构造函数,以处理可能的异常
  • 您的文件有四行,但
    数据
    数组只有三行。要么使数组变大,要么在读取数组可以容纳的行数后退出输入循环

首先:matrixBuilder()方法中有一个错误

初始化扫描程序,将文件名传递给构造函数:

Scanner in = new Scanner(txtFile);
因此,当您调用时,它不会读取文件内容:

in.next();
lineGet
变量具有“peter.txt”值。这显然不是你想要的

您需要以这种方式初始化扫描仪:

    Scanner in = null;
    try {
        in = new Scanner(new FileInputStream(txtFile));
    } catch (FileNotFoundException ex) {
        // work up exception
    }
或者只是

public void matrixBuilder() throws FileNotFoundException {
    Scanner in = new Scanner(new FileInputStream(txtFile));
//...
}
秒: 数据数组的初始大小不正确:

private char[][] Data = new char[3][];
您的文件“peter.txt”至少有5行。 因此,数据数组的初始大小也应该是5

纠正这些错误后,你应该会得到想要的结果

希望这有帮助

更新:

完整的工作代码:

Bug.java


要获取代码:粘贴代码,选择代码,单击
{}
。好的,我在编辑中更改了打印机方法,但是现在在Bug.matrixPrinter(Bug.java:40)的BugTester.main(BugTester.java:24)
哪一行是第40行?您是否更改了
main
?第40行是
for(int col=0;col
我更改了TXT文件的名称,但它位于同一文件夹中,并且位于该名称下。更新了我的答案,并提供了两个提示。也请自己进行一些调试-在各个部分添加print语句,以检查变量是否符合预期(或使用调试器)。谢谢!不幸的是,我不能使用try/catch语句,因为“我们没有使用它们,因此它是”剽窃“我遇到了这种情况,因为我使用了递归,所以一个项目失败了。。。。但我明白问题所在,我正试图找出如何在不使用try/catch语句的情况下使用它……您可以使用
throws
语句。这是允许的吗?即使使用try/catch,我在Bug.matrixBuilder(Bug.java:62)和BugTester.main(BugTester.java:23)的线程“main”java.lang.NullPointerException中也会遇到
异常。
第62行是while语句。当我有这样的夜晚时,我想改变我的专业。谢谢你的帮助。明天早上我还要调试更多!我甚至连想都不敢想了。@Pnchappy92请看我更新的帖子。当然,如果你累了,就多睡一会儿!
in.next();
    Scanner in = null;
    try {
        in = new Scanner(new FileInputStream(txtFile));
    } catch (FileNotFoundException ex) {
        // work up exception
    }
public void matrixBuilder() throws FileNotFoundException {
    Scanner in = new Scanner(new FileInputStream(txtFile));
//...
}
private char[][] Data = new char[3][];
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Bug {
    private int startingPoint;
    private char mrBug;
    private char placeholder;
    private int postition;
    private int matrixLength;
    private int matrixRows;
    private String lineGet;
    private String txtFile;
    private char[][] Data = new char[5][];

    /**
    Constructs a computer class with title, days, time and room
     */
    public Bug(int initialPosition, char bug, String inputFile) {
        startingPoint = initialPosition;
        mrBug = bug;
        txtFile = inputFile;
    }

    public void matrixPrinter() {
        System.out.println("Data:");

        for (int row = 0; row < Data.length; row++) {
            for (int col = 0; col < Data[row].length; col++) {
                System.out.print(Data[row][col]);
            }
            System.out.print("\n");
        }

    }//End of matrixBuilder Method

    public void matrixBuilder() throws FileNotFoundException {
        Scanner in = new Scanner(new FileInputStream(txtFile));

        matrixRows = 0;
        // We should also check that the number of lines in the file 
        // doesn't exceed the Data array size.
        while (in.hasNextLine() && matrixRows < Data.length) {
            lineGet = in.next();
            System.out.println("line["+ matrixRows + "]:" + lineGet);
            matrixLength = lineGet.length();
            Data[matrixRows] = new char[matrixLength];
            for (int i = 0; i < matrixLength; i++) {
                placeholder = lineGet.charAt(i);
                Data[matrixRows][i] = placeholder;

            }//End of For
            matrixRows++;
        }//End of While
        in.close();
    }//End of matrixBuilder Method

    /**
    Gets the title
    @return the title
     */
    public void turn() {
        //return title;
    }

    public void move() {
        // your work here
    }

    /**
    Gets Postition
    @return the postition
     */
    public int getPostion() {
        return postition;

    }
}
import java.io.FileNotFoundException;

public class BugTester {

    public static void main(String[] args) throws FileNotFoundException {
        int start = 0;
        char bugSymbol = 'a';
        String inputFile = "peter.txt";
        Bug crawler1 = new Bug(start, bugSymbol, inputFile);
        crawler1.matrixBuilder();
        crawler1.matrixPrinter();
    }
}