gpt4 book ai didi

java - NoSuchElementException 等

转载 作者:行者123 更新时间:2023-12-02 06:03:54 26 4
gpt4 key购买 nike

我的任务是:

  • 创建一个包含 2 列数字的文件:距离速度
  • 编写一个 TravelInfo 类,其中包含三部分信息:速度时间距离
  • 该类还应该有一个方法 calcTime(),用于根据距离和速度计算到达目的地所需的时间(回想一下:时间 = 距离/速度)
  • 编写一个主程序:
    • 创建大小为 10 的 TravelInfo 对象的 ArrayList。
    • 提示用户输入文件名并将数据读入 TravelInfo 对象
    • 在每个 TravelInfo 对象上调用 calcTime() 方法。
    • 使用以下格式写入的数据创建输出文件:距离、时间、速度

每次运行程序时都会出现错误

Exception in thread "main" java.util.NoSuchElementException

除了这个错误之外,我认为我已经完成了所有正确的事情,除了调用我的方法之外,而且我仍然没有格式化输出文件(不太确定如何格式化)。收到此错误时我无法继续。

这是我的 main() 方法:

public static void main(String[] args) throws IOException {

Scanner keyboard = new Scanner(System.in);
ArrayList<TravelInfo> list = new ArrayList<>();

System.out.println("What is the name of the file?");
String filename = keyboard.nextLine();
File f = new File(filename);
Scanner inputFile = new Scanner(f);
while(inputFile.hasNext()) {
int s = inputFile.nextInt();
int d = inputFile.nextInt();
int t = inputFile.nextInt();


TravelInfo p = new TravelInfo(s, d, t);
list.add(p);
TravelInfo cls = new TravelInfo(s,d,t);
cls.calcTime(t);
cls.calcTime(s);
cls.calcTime(d);

// System.out.println("Time is " + cls.calcTime(t));

/*for(int i=0; i<list.size(); i++) {
list.get(i).print();
*/ }
for(TravelInfo k : list)
System.out.println(k);

PrintWriter outputFile = new PrintWriter("Data.txt");
outputFile.println(list);
//outputFile.println();
outputFile.close();
}

}

还有我的 TravelInfo

public class TravelInfo {
private int speed;
private int distance;
private int time;

public TravelInfo(int s, int d, int t) {
speed = s;
distance = d;
time = t;
}
public int calcTime(int time) {
time = distance/speed;
return time;
}
}

最佳答案

您应该进行更多验证,切勿盲目使用 nextXXX() 方法 - 类似

while(true)
{
if (!inputFile.hasNextInt()) {
System.err.println("Reading file failed - invalid format (s)");
break;
}
int s = inputFile.nextInt();
System.out.println("Reading s = " + s);

if (!inputFile.hasNextInt()) {
System.err.println("Reading file failed - invalid format (d)");
break;
}
int d = inputFile.nextInt();
System.out.println("Reading d = " + d);


if (!inputFile.hasNextInt()) {
System.err.println("Reading file failed - invalid format (t)");
break;
}
int t = inputFile.nextInt();
System.out.println("Reading t = " + t);
// Do some stuff
}

这样,您将避免 NoSuchElementException,并且应用程序将正常终止。您将在控制台上获得调试输出。它还会打印出从文件中读取的确切内容。

关于java - NoSuchElementException 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55956281/

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