如果存在空格,为什么还要单独检查用户输入字符串?

Why is the user input string being checked individually if there is whitespace?

提问人:Nicholas Chill 提问时间:10/19/2022 更新时间:10/19/2022 访问量:38

问:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String characters;
        Scanner scan = new Scanner(System.in);
        boolean quit = false;

        do {
            System.out.println("USD to SEK converter");
            System.out.println("Enter 'quit' to exit the program");
            System.out.print("Enter USD amount: ");

            if (scan.hasNextDouble()) {
                double usd = scan.nextDouble();
                double sek = usd * 11.2;
                System.out.println(sek);
            }else if(scan.hasNextLine()) {
                characters = scan.nextLine();
                System.out.println(characters);
                if (characters.equals("quit")) {
                    quit = true;
                }
            }
        }while (!quit);
    }
}

我正在制作一个 USD 到 SEK 的转换器,当我输入 1 + 时,我首先得到 1 USD 到 SEK 的转换,然后得到 +。为什么程序首先检查 1,然后检查 +,而不是同时检查两者?如果我输入 1+,我得到 1+。没有转换 1。如果我输入 1+2,我得到 1+2,当我输入 1 + 2 时,我首先得到 1 美元到 SEK 的转换,然后是 + 2。

Java 输入 java.util.scanner 空格

评论

1赞 user16320675 10/19/2022
任何不考虑行 ( 或 ) 的方法都适用于 TOKENS,这些令牌由空格分隔(如果未更改) - 还要注意 扫描仪在使用 next() 或 nextFoo() 后会跳过 nextLine()? - 无论如何nexthasNextnextLinehasNextLine
0赞 10/19/2022
因为 和 将读取输入中的下一个双精度,而不一定消耗一整行。在下一个双精度的情况下,它可以读取 。hasNextDoublenextDouble"1 +"1
0赞 Nicholas Chill 10/19/2022
@user16320675 我只希望用户能够输入双精度,没有字母或 + 或 - 等。
0赞 Nicholas Chill 10/19/2022
@OHGODSPIDERS 那么,我该如何一次检查整条生产线?
0赞 10/19/2022
您可以始终使用 method 将整行作为 String 获取,然后检查该 String 包含的内容,如果是,如果不是,是否可以通过使用nextLine()"quit"Double.parseDouble

答: 暂无答案