【发布时间】:2014-10-13 06:09:57
【问题描述】:
所以我的程序的要点是它会从文件中读取一些命令,然后根据命令执行某些操作。我的问题是我的代码没有读取 txt 文档的所有行。具体来说,它读取我测试的前四行,方法是之前在 if 语句中输入 print 语句来测试是否 input = "P"。任何帮助将不胜感激。
这里也是txt文档
P e1 10 5
P e2 19 5
P e3 11 5
P e4 18 5
R mouth 10 10 10 2
S nose 14 7 2
P p3 9 9
P p4 20 9
D
Y bad command
M p3 9 12
M p4 20 12
D
public static void main(String[] args) {
String filename = args[0];
File file = new File(filename);
Scanner input=null;
try {
input=new Scanner(file);
}
catch(java.io.FileNotFoundException ex) {
System.out.println("ERROR: Couldn't open file: " + file);
System.exit(1);
}
AsciiDisplay asciiDisplay= new AsciiDisplay();
while(input.hasNext()) {
if(input.next().equals("P")) {
String id=input.next();
int x=input.nextInt();
int y=input.nextInt();
Coordinate coordinate=new Coordinate(x,y);
Point point=new Point(id,coordinate);
asciiDisplay.addShape(point);
}
else if(input.next().equals("R")) {
String id=input.next();
int x=input.nextInt();
int y=input.nextInt();
int length=input.nextInt();
int height=input.nextInt();
Coordinate coordinate= new Coordinate(x,y);
Rectangle rectangle= new Rectangle(id,coordinate,length,height);
asciiDisplay.addShape(rectangle);
}
else if(input.next().equals("S")) {
String id=input.next();
int x=input.nextInt();
int y=input.nextInt();
int size=input.nextInt();
Coordinate coordinate= new Coordinate(x,y);
Square square = new Square(id,coordinate,size);
asciiDisplay.addShape(square);
}
else if(input.next().equals("M")) {
String id=input.next();
int x=input.nextInt();
int y=input.nextInt();
Coordinate coordinate= new Coordinate(x,y);
asciiDisplay.moveShape(id,coordinate);
}
else if(input.next().equals("E")) {
asciiDisplay.deleteAll();
}
else if(input.next().equals("D")) {
asciiDisplay.updateGrid();
asciiDisplay.printGrid();
}
else if(input.next().equals("X")) {
System.out.println("Invalid command: X");
}
}
}
}
【问题讨论】:
-
那么你的调试器告诉你什么?没有调试器?你添加的用于查看程序流程和变量内容的打印语句怎么样?
-
@JarrodRoberson 可能是骗子,但不是那个。
-
这不是指定问题的副本。有一个完全不同的答案 - 我正要发布。 OP 不会尝试将整个内容读入字符串;他们正试图一点一点地处理它。
标签: java file class loops if-statement