Java扫描程序验证-字符、整型、双精度、字符串

Java扫描程序验证-字符、整型、双精度、字符串,java,Java,如何为输入的不同类型的数据显示不同的消息? 我只希望用户能够输入一个整数,但如果他们输入其他内容,那么我希望为每种类型都提供一条自定义消息。 比如说, char:“您不能输入字母,请使用1-10之间的数字” double:“您不能输入带小数的数字,请使用1-10之间的整数” 字符串:“请输入1-10之间的数字” 目前我正在使用这段代码,如果不是整数,它只允许我显示一条消息 printMenuOption(); if (!sc.hasNextInt()){ System.out.pri

如何为输入的不同类型的数据显示不同的消息? 我只希望用户能够输入一个整数,但如果他们输入其他内容,那么我希望为每种类型都提供一条自定义消息。 比如说,

  • char:“您不能输入字母,请使用1-10之间的数字”
  • double:“您不能输入带小数的数字,请使用1-10之间的整数”
  • 字符串:“请输入1-10之间的数字”
目前我正在使用这段代码,如果不是整数,它只允许我显示一条消息

printMenuOption();
if (!sc.hasNextInt()){
    System.out.println("Please enter a number from 1 to 10");
    sc.nextLine();
}else{
    returnDataMenu(sc.nextInt());
}

我希望这对你有帮助

Scanner myInput = new Scanner(system.in);

do {
    printMenuOption();
    if (!myInput.hasNextInt()){

        if(myInput.hasNextDouble()){

            System.out.println("You can not use a decimal number!");
            System.out.println("Please try again, choose a number from 1 to 10.");


        }else if(myInput.nextLine().length() <= 1){

            System.out.println("You can not use a character as an entry");
            System.out.println("Please try again, choose a number from 1 to 10.");


        }else if(myInput.nextLine().length() > 1){

            System.out.println("You can not enter a string");
            System.out.println("Please try again, choose a number from 1 to 10.");

        }
        else{

            System.out.println("Please enter a number from 1 to 10");
            userInput = myInput.nextLine();
        }



    }
    else{

        returnDataMenu(myInput.nextInt());
    }

} while (cont == true);
Scanner myInput=新扫描仪(system.in);
做{
printMenuOption();
如果(!myInput.hasNextInt()){
if(myInput.hasNextDouble()){
System.out.println(“不能使用十进制数!”);
System.out.println(“请重试,从1到10中选择一个数字”);
}else if(myInput.nextLine().length()1){
System.out.println(“不能输入字符串”);
System.out.println(“请重试,从1到10中选择一个数字”);
}
否则{
System.out.println(“请输入1到10之间的数字”);
userInput=myInput.nextLine();
}
}
否则{
returnDataMenu(myInput.nextInt());
}
}而(cont==true);

按以下步骤操作它将解决您的问题

    while (sc.hasNext()) {
                if (sc.hasNextInt()) {
                    returnDataMenu(sc.nextInt());
                } else if (sc.hasNextLong()) {
                    System.out.println("You can't enter a long number, please use a whole number from 1-10");
                } else if (sc.hasNextDouble()) {
                    System.out.println("You can't enter a number with a decimal, please use a whole number from 1-10");
                } else if (sc.hasNextBoolean()) {
                    System.out.println("You can't enter a boolean, please use a whole number from 1-10");
                } else if (sc.next() != null) {
                    System.out.println("You can't enter a string, please use a whole number from 1-10");
                } else if (sc.nextLine().length() <= 1) {
                    System.out.println("You can't enter a char, please use a whole number from 1-10");
                }
}
while(sc.hasNext()){
if(sc.hasnetint()){
returnDataMenu(sc.nextInt());
}else if(sc.hasNextLong()){
System.out.println(“您不能输入长数字,请使用1-10之间的整数”);
}else if(sc.hastNextDouble()){
System.out.println(“您不能输入带小数点的数字,请使用1-10之间的整数”);
}else if(sc.hasNextBoolean()){
System.out.println(“您不能输入布尔值,请使用1-10之间的整数”);
}else if(sc.next()!=null){
System.out.println(“您不能输入字符串,请使用1-10之间的整数”);

}否则,如果(sc.nextLine().length(),您是否考虑过每个字符的特征,这些特征有助于您做出判断?例如,字符大小为1且非数字,依此类推。您可以在阅读
sc.nextLine()之后检查
sc.hasNextDouble()
你可以检查它是否有1个字符。你想过使用instanceof吗?@AdrianM.,调用instanceof help会如何?嗯,可能不会;我在想,如果他能够使用例如input instanceof Double?…..来测试输入,那么他就可以确定要输出的消息。当你这样做时,
myInput.nextLine()
这实际上读取该行,因此您不能多次调用它并期望它返回相同的字符串。同时,长度何时不是1?