Java 二维数组输入不正确
我在获取分配的二维数组的输入时遇到问题。基本上,我必须创建一个在屏幕上爬行的bug,并写入我们名字的ASCII图像。我们必须从文本文件中获取输入,因此我认为最好的做法是为文件中的每个字符创建一个二维数组,并让它根据每个点中的字符来确定它的功能。但是,它始终显示二维数组具有相同的内容(如下所示) 下面是该类、tester类和txt文件的示例。如何让它显示正确的输入 Bug类 Txt文件:Java 二维数组输入不正确,java,multidimensional-array,Java,Multidimensional Array,我在获取分配的二维数组的输入时遇到问题。基本上,我必须创建一个在屏幕上爬行的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();
}
}