线程"main" java.util.NoSuchElementException中的异常:未找到行


details:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine<Scanner.java:1540>
at CarReader2.main<CarReader2.java:30>
that's the entirety of the error.
我代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
public class CarReader2 {
    String name, speed, acc;
    public CarReader2(String carName, String carSpeed, String carAcc){
    name = carName;
    speed = carSpeed;
    acc = carAcc;
    }
    public String toString(){
    return "Name of car: " +name+ "nSpeed of car: " +speed+"nAcceleration of car: " +acc+"n";
    }
    public static void main(String[] args) {
    File file = new File("carlist.txt");
    try {
        Scanner sc = new Scanner(file);
        while (sc.hasNextLine()) {
            String c1Name = sc.nextLine();
            String c1Speed = sc.nextLine();
            String c1Acc = sc.nextLine();
            CarReader2 car1 = new CarReader2(c1Name,c1Speed,c1Acc);
            car1.speed = c1Speed;
            car1.acc = c1Acc;
            String c2Name = sc.nextLine();
            String c2Speed = sc.nextLine();
            String c2Acc = sc.nextLine();
            CarReader2 car2 = new CarReader2(c2Name,c1Speed,c1Acc);
            car2.speed = c2Speed;
            car2.acc = c2Acc;
            System.out.println("Information on both cars");
            System.out.println("First car:");
            System.out.println(car1.toString());
            System.out.println("Second car:");
            System.out.println(car2.toString());
        }
        sc.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();

    }
    }
}

它应该从carlist.txt文件中读取2辆车的数据,然后以正确的格式打印这两辆车的数据。

carlist.txt是包含以下内容的文本文件:

jonathan 3 7
dio 8 2

程序应该输出

Information on both cars
First car:
Name of car: jonathan
Speed of car: 3
Acceleration of car: 7
Second car:
Name of car: dio
Speed of car: 8
Acceleration of car: 2

程序可以编译,但不能正常运行,并在最上面显示错误。

你使用的nextLine方法是错误的。Name, speed和acceleration在同一行,但是你使用了3个nextLine方法来读取它们。当你试图从一个只有2行的文件中读取6行时,就会发生这种情况。用sc.next()代替sc.nextLine()

你读的行太多了。在你的文件中只有两行,但你正试图读取6。您可以将文本文件更改为:

jonathan 
3 
7
dio 
8 
2

或者你可以读一行,然后把你想要的信息分开。

相关内容

  • 没有找到相关文章

最新更新