Java:java.util.NoSuchElementException:找不到行

标签 java constructor nosuchelementexception

我遇到了问题,不知道该怎么办。这是异常(exception)情况:

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

最佳答案

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

r.close();

这一行应该被删除

参见:Do not create multiple buffered wrappers on a single InputStream

关于Java:java.util.NoSuchElementException:找不到行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16016934/

相关文章:

使用 String Tokenizer 的 Java NoSuchElementException

java - 给循环命名

java - 如何从组合框中禁用/删除上下文菜单?

java - 带 getter 的公共(public)静态最终变量

java - 在文本文件中搜索字符串

c++ - 如果一个类包含另一个类的对象,并且所有类都通过构造函数初始化,那么初始化如何工作?

c++ - 与硬件接口(interface)的 C++ 构造函数应该真正起作用吗?

c++ - 直接在其他类的构造函数中使用类的构造函数

java - 为什么我收到 NoSuchElementException?

java - 读取文本文件的最后一行后出现 NoSuchElementException 错误