首页 > 解决方案 > 线程 java.util.NoSuchElementException 中的异常:找不到行

问题描述

我遇到了一个错误(如标题中所述),因为我正在尝试使用扫描仪类输入字符串。我通过谷歌搜索,我注意到很多人都面临同样的问题,但建议的解决方案似乎都不适合我,因此我在这里问它。我的代码是这样的:

public void displayPrice() {
        System.out.println("You need to be above 18 to continue. Do you wish to continue? Yes/No");
        Scanner in = new Scanner(System.in);
        in.nextLine();
        String obj;
        obj = in.nextLine();
        if (obj.equals("Yes")) {
            getPrice();
        } else {
            System.out.println("Enjoy your day.");
        }
        in.close();
    }

有人可以向我解释我做错了什么吗?非常感谢!

标签: java

解决方案


package com.sample.test;

import java.util.Scanner;

public class PriceList {

    public static void displayPrice() {
        System.out.println("You need to be above 18 to continue. Do you wish to continue? Yes/No");
        Scanner in = new Scanner(System.in);
        in.nextLine();
        String obj;
        obj = in.nextLine();
        if (obj.equals("Yes")) {
            getPrice();
        } else {
            System.out.println("Enjoy your day.");
        }
        in.close();
    }

    private static void getPrice() {

        System.out.println("Enjoy your day.");

    }

    public static void main(String[] args) {
        displayPrice();
    }

}

它不会对我造成任何问题。以下是我的输出。

You need to be above 18 to continue. Do you wish to continue? Yes/No
Yes
YEs
Enjoy your day.

但是扫描仪被您使用了两次。可以修改如下图:

String obj = in.nextLine();
    if (obj.equals("Yes")) {
        getPrice();
    } else {
        System.out.println("Enjoy your day.");
    }

但是 Scanner 可能会导致问题,所以我总是使用 BufferedReader

package com.sample.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PriceList {

    public static void displayPrice() throws IOException {
        System.out.println("You need to be above 18 to continue. Do you wish to continue? Yes/No");
        InputStreamReader reader = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(reader);
        String obj;
        try {
            obj = br.readLine();
            if (obj.equalsIgnoreCase("yes")) {
                getPrice();
            } else {
                System.out.println("Enjoy your day.");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null)
                br.close();
        }
    }

    private static void getPrice() {
        System.out.println("It costs $10");

    }

    public static void main(String[] args) throws IOException {
        displayPrice();
    }

}

推荐阅读