1

我有一个问题,不知道该怎么办。这是一个例外:

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Unknown Source)
    at Auto.<init>(Auto.java:32)
    at Auto.main(Auto.java:22)

这就是我的代码:

import java.util.Scanner;

public class Auto {
    private String Marke1; 
    String Modell1; 
    String Farbe1; 
    double Höhe;
    double Breite;
    double Länge;
    int Tueren = 4;

    public static void main(String[] args) {
        System.out.println("Hello Auto!");

        Auto myFerrari = new Auto();
        myFerrari.einfacheNachricht();
        Auto myOpel = new Auto();
        myOpel.einfacheNachricht();
    }

    public Auto() {
        Scanner r = new Scanner(System.in);
        System.out.println("Bitte geben Sie die Marke ihres Autos an");
        Marke1 = r.nextLine()
        System.out.println("Bitte geben Sie das Modell ihres Autos an");             
        Modell1 = r.nextLine();
        System.out.println("Bitte geben Sie die Farbe ihres Autos an");
        Farbe1 = r.nextLine();
        System.out.println("Bitte geben Sie an, wiehoch ihr Auto ist");
        Höhe = r.nextDouble();
        System.out.println("Bitte geben Sie an, wie breit ihr Auto ist");
        Breite = r.nextDouble();
        System.out.println("Bitte geben Sie an, wie lang ihr Auto ist"); 
        Länge = r.nextDouble();
        r.close();
    }

    public Auto(String aMarke1, String aModell1, String aFarbe1, double aHöhe, double aBreite, double aLänge) { 
        Marke1 = aMarke1; 
        Modell1 = aModell1;
        Farbe1 = aFarbe1;
        Höhe = aHöhe;
        Breite = aBreite;
        Länge = aLänge;
    }

    public int getSitzreihen() { 
        return Tueren = 2; 
    }

    public void einfacheNachricht() {
        System.out.println("------------------------------------------");
        System.out.println("Automarke: " + Marke1);
        System.out.println("Modell: " + Modell1);
        System.out.println("Farbe: " + Farbe1);
        System.out.println("Sitzreihen: " + getSitzreihen());
        System.out.println("Volumen: " +(Höhe * Breite * Länge) +"m²" ) ;
        System.out.println("Ihr " + Farbe1 + "er " + Marke1 + " " + Modell1 + " hat ein Volumen von "+(Höhe * Breite * Länge) +"m²");
        System.out.println("------------------------------------------\n");
    }
}
4

2 回答 2

3

关闭 aScanner会导致底层证券InputStream也被关闭。由于只有一个System.in,任何新创建Scanner的对象都无法从同一个流中读取:

r.close();

此行应删除

请参阅:不要在单个 InputStream 上创建多个缓冲包装器

于 2013-04-15T13:55:23.277 回答
1

您需要检查下一行之前是否存在,hasNextLine()在调用之前使用nextLine()

于 2013-04-15T13:57:34.393 回答