Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何验证是否提供了键盘输入_Java_Eclipse - Fatal编程技术网

Java 如何验证是否提供了键盘输入

Java 如何验证是否提供了键盘输入,java,eclipse,Java,Eclipse,冒着听起来很傻的风险,我来了: 有人能告诉我如何验证是否通过扫描仪输入了字符串吗 我在下面写了一些代码,但我被卡住了。 你可能会注意到,我完全是个新手 import static java.lang.System.in; import static java.lang.System.out; import java.util.Scanner; public class Test { public static void main(String args[]) {

冒着听起来很傻的风险,我来了:

有人能告诉我如何验证是否通过扫描仪输入了字符串吗

我在下面写了一些代码,但我被卡住了。 你可能会注意到,我完全是个新手

import static java.lang.System.in;
import static java.lang.System.out;

import java.util.Scanner;


public class Test {

    public static void main(String args[]) {
        Scanner keyboard = new Scanner(in);
        char reply;

        do {
            System.out.print("Nieuwe klant? (j/n)");
            reply = keyboard.findWithinHorizon(".", 0).charAt(0);
        } while (reply != 'j' && reply != 'n');

        String giveFirstName;
        String giveLastName;
        String giveStreet;
        String giveNumber;
        String giveCity;
        String giveLand;
        String giveMail;
        String giveGsm;
        String enterLastName;
        String enterFirstName;

        if (reply == 'j') {

            System.out.print("Voornaam Klant:  ");
            giveFirstName = keyboard.next();
            System.out.print("Achternaam Klant:  ");
            giveLastName = keyboard.next();
            System.out.print("Straatnaam:  ");
            giveStreet = keyboard.next();
            System.out.print("nummer:  ");
            giveNumber = keyboard.next();
            System.out.print("Stad:  ");
            giveCity = keyboard.next();
            System.out.print("Land:  ");
            giveLand = keyboard.next();
            System.out.print("E-mail adress:  ");
            giveMail = keyboard.next();
            System.out.print("Gsm-nummer:  ");
            giveGsm = keyboard.next();


        } else {
            out.print("Voornaam bestaande klant:");
            enterFirstName = keyboard.next();
            System.out.print("Achternaam bestaande klant:");
            enterLastName = keyboard.next();
        }
    }
}
好吧,通过这个。。。 “有人能告诉我如何验证扫描仪输入的字符串是否为真吗?” 还有你的评论。。。 “我打算在继续程序之前检查用户是否提供了输入”

如果您只是想检查用户是否提供了输入,则无需执行任何操作。这是因为Scanner.next()方法是一个阻塞方法

从APi文档中。。。 “此方法在等待输入扫描时可能会阻塞。”

什么是阻塞方法? Java中的阻塞方法是那些在操作完成之前停止执行线程的方法

因此,.next()方法通过在用户输入输入之前停止运行(阻塞)其余代码来为您处理此输入验证

阅读更多信息:

在您的代码中

do {
    System.out.print("Nieuwe klant? (j/n)");
    reply = keyboard.findWithinHorizon(".", 0).charAt(0);
} while (reply != 'j' && reply != 'n');
虽然我不确定
.findWithinHorizon(“.”,0)
是什么,但这里有另一种读取字符的方法。 从此更改do while循环

do {
    System.out.print("Nieuwe klant? (j/n)");
    reply = keyboard.findWithinHorizon(".", 0).charAt(0);
} while (reply != 'j' && reply != 'n');
对此

do {
    String input;
    System.out.print("Nieuwe klant? (j/n)");
    input = keyboard.next(); //Gets next String
    reply=input.charAt(0); //Sets String input to char reply
} while (reply != 'j' && reply != 'n');

将读取一个字符。我希望这有帮助

“验证是否输入了
字符串”是什么意思?只要用户不输入任何内容,扫描器就不会返回任何内容,如果这是您的意思的话。验证是代码实际上继续执行某些操作,因为
scanner\#next()
会等待输入(但如果提供的值超过1个,并且被下一个标记标识为空白,则不会出现这种情况。
Input1 Input2
)。好吧,paul,我打算在我继续程序之前检查用户是否输入了。Yeah@paul是对的。用户不能跳过,除非通过扫描仪输入内容。