Java: java.util.NoSuchElementException: строка не найдена

У меня проблема, и я не знаю, что делать. Вот исключение:

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");
    }
}

person L3V0    schedule 15.04.2013    source источник
comment
Пожалуйста, переформатируйте код в вашем вопросе. На данный момент это нечитаемо.   -  person Jon Skeet    schedule 15.04.2013
comment
Какая строка является строкой 32? Кроме того, почему у вас есть return Tueren = 2? Вы имеете в виду return Tueren == 2 (присваивание или равенство)?   -  person thegrinner    schedule 15.04.2013


Ответы (2)


Закрытие Scanner приводит к закрытию базового InputStream. Поскольку есть только один System.in, любые вновь созданные объекты Scanner не смогут читать из того же потока:

r.close();

эту строку надо убрать

См.: Не создавайте несколько буферизованных оболочек для одного потока ввода

person Reimeus    schedule 15.04.2013
comment
Большое спасибо, вы очень помогли :) - person L3V0; 15.04.2013

Вам нужно проверить, существует ли следующая строка раньше, используйте hasNextLine() перед вызовом nextLine()

person jamp    schedule 15.04.2013