【问题标题】:Java: java.util.NoSuchElementException: No line foundJava:java.util.NoSuchElementException:找不到行
【发布时间】:2013-04-15 13:50:15
【问题描述】:

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

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

【问题讨论】:

  • 请重新格式化您问题中的代码。目前无法阅读。
  • 第 32 行是哪一行?另外,为什么你有return Tueren = 2?你的意思是return Tueren == 2(赋值与相等)?

标签: java constructor nosuchelementexception


【解决方案1】:

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

r.close();

这行应该去掉

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

【讨论】:

  • 非常感谢,你帮了大忙 :)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-01-28
    • 2011-12-06
    • 2011-11-04
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多