gpt4 book ai didi

java - 程序不会读取文件中的所有数据

转载 作者:行者123 更新时间:2023-12-01 22:39:53 26 4
gpt4 key购买 nike

所以我的程序的要点是它将从文件中读取一些命令,然后根据命令判断执行某些操作。我的问题是我的代码没有读取 txt 文档的所有行。具体来说,它读取我通过先前在 if 语句内输入 print 语句来测试的前四行,该语句测试输入是否=“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");


}


}
}
}

最佳答案

您的问题是您在 if 语句中重复调用 input.next(),这会不断从输入中提取更多标记。相反,您需要调用它一次并将值分配给变量,然后检查该变量:

String nextCommand = input.next();

或者,您可以使用开关:

switch(input.next()) {
case "P":
// do stuff
break;
case "R":
// do other stuff
break;
}

关于java - 程序不会读取文件中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26333915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com