而Java中的循环错误

时间:2015-01-13 22:33:37

标签: java

我正在学习java我自己但是从我所知道的我似乎无法解决这个问题 目前正在测试一个脚本,如果你没有输入你的名字,你必须重新输入它,但是这个错误出现了我到处搜索但我尝试过的大多数事情都没有用

Please type in your name: 
lucas
Welcome lucas
Confirm your name:
luca
Please type in your name: 
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at input.main(input.java:9)

这是代码:

import java.util.Scanner;

public class input {
    public static void main(String[] args) {

        while (true) {
            try (Scanner input = new Scanner(System.in)) {
                System.out.println("Please type in your name: ");
                String name = input.nextLine();
                System.out.println("Welcome " + name);
                if (name.equals("nico")) {
                    System.out.println("bitch");
                    break;
                } else {
                    System.out.println("Confirm your name:");
                    String name1 = input.nextLine();
                    if (name1.equals("nico")) {
                        System.out.println("Hello " + name1 + "... bitch");
                    } else if (name1.equals(name)) {
                        System.out.println("Thank you");
                        break;
                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

try-with-resources移至while循环周围。当执行离开try-with-resources时,Java将关闭资源。这里,该资源是标准输入,无法重新打开。

try (Scanner input = new Scanner(System.in)) {
    while (true) {
        System.out.println("Please type in your name: ");

你实际上并不需要try-with-resources。不要关闭标准输入/输出/错误。

答案 1 :(得分:1)

不要将Scanner 放入循环中。

扫描仪仍有输入时循环。

目前,您经常创建 new Scanner