NoSuchElementException等

时间:2019-05-02 16:02:53

标签: java loops

我的任务是:

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

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

  

线程“ main”中的异常java.util.NoSuchElementException

除此错误外,我认为除了调用我的方法外,其他所有操作我都做对了,但我仍然没有格式化输出文件(不太确定如何格式化)。出现此错误时,我无法继续。

这是我的TravelInfo方法:

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

2 个答案:

答案 0 :(得分:0)

您应该进行更多的验证,并且永远不要盲目使用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,并且应用程序将正常终止。您将在控制台上获得调试输出。它还会打印出从文件中确切读取的内容。

答案 1 :(得分:0)

正如多利安所说,您缺少一些验证:

button.addEventListener("click", function () {
    for (var x = 0; x <= password.length; x++) {
        if (input.value == password[x]) {
            alert("welcome"); // or take document.getElementById('someid').innerHTML = 'welcome!'
            return;
        }
    }
    alert("wrong");
});

我个人不喜欢'while(true)'东西,所以这是我的版本。

while(inputFile.hasNext()) // Tells you there is "at least" 1 more element.
{
    int s = inputFile.nextInt();   // Good
    int d = inputFile.nextInt();   // Not good if 's' has taken the last element
    int t = inputFile.nextInt();   // Same as above

    // rest of the code here...
}