如何在Java中检查用户输入是字符串、双精度还是长型

如何在Java中检查用户输入是字符串、双精度还是长型,java,validation,java.util.scanner,Java,Validation,Java.util.scanner,我是java的初学者。我想首先检查用户输入的是字符串、双精度还是整数。如果是字符串、双精度还是负数,则应提示用户输入有效的整数 再一次。只有当用户输入了一个有效的数字时,程序才会跳转尝试。我想了好几个小时,没想到什么有用的。请帮忙,谢谢 import java.util.InputMismatchException; import java.util.Scanner; public class Fizz { public static void main(String[] args) {

我是java的初学者。我想首先检查用户输入的是字符串、双精度还是整数。如果是字符串、双精度还是负数,则应提示用户输入有效的整数 再一次。只有当用户输入了一个有效的数字时,程序才会跳转尝试。我想了好几个小时,没想到什么有用的。请帮忙,谢谢

import java.util.InputMismatchException;
import java.util.Scanner;

public class Fizz {

public static void main(String[] args) {

    System.out.println("Please enter a number");

    Scanner scan = new Scanner(System.in);

    try {

        Integer i = scan.nextInt();

        if (i % 3 == 0 && (i % 5 == 0)) {
            System.out.println("FizzBuzz");
        } else if (i % 3 == 0) {
            System.out.println("Fizz");
        } else if (i % 5 == 0) {
            System.out.println("Buzz");
        } else {
            System.out.println(i + "は3と5の倍数ではありません。");
        }
    } catch (InputMismatchException e) {
        System.out.println("");

    } finally {
        scan.close();
    }

}

一个简单的修复方法是将整行/用户输入作为字符串读取。 这样的办法应该行得通。(未测试代码):


您还可以使用Integer.parseInt,然后检查该整数的非负性。如果输入为字符串或双精度,则可以捕获NumberFormatException

Scanner scan = new Scanner(System.in);
try {
     String s = scan.nextLine();
     int x = Integer.parseInt(s);
}
catch(NumberFormatException ex)
{
}

试试这个。我使用了一些条件来表示输入

Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
int charCount = input.length();
boolean flag = false;
for(int x=0; x<charCount; x++){   
   for(int y=0; y<10; y++){
       if(input.charAt(x)==Integer.toString(y))
          flag = true;
       else{
          flag = false;
          break;
       }
   }
}
if(flag){
   if(scan.hasNextDouble())
      System.out.println("Input is Double");
   else
      System.out.println("Input is Integer");
}   
else
   System.out.println("Invalid Input. Please Input a number");
Scanner scan=新的扫描仪(System.in);
字符串输入=scan.nextLine();
int charCount=input.length();
布尔标志=假;

对于(int x=0;x尝试此操作。它将提示输入,直到输入大于0的
int

System.out.println("Please enter a number");

try (Scanner scan = new Scanner(System.in)) {
    while (scan.hasNext()) {
        int number;
        if (scan.hasNextInt()) {
            number = scan.nextInt();
        } else {
            System.out.println("Please enter a valid number");
            scan.next();
            continue;
        }

        if (number < 0) {
            System.out.println("Please enter a number > 0");
            continue;           
        }

        //At this stage, the number is an int >= 0
        System.out.println("User entered: " + number);
        break;
    }
}
System.out.println(“请输入一个数字”);
尝试(扫描仪扫描=新扫描仪(System.in)){
while(scan.hasNext()){
整数;
if(scan.hasNextInt()){
number=scan.nextInt();
}否则{
System.out.println(“请输入有效数字”);
scan.next();
继续;
}
如果(数字<0){
System.out.println(“请输入一个大于0的数字”);
继续;
}
//在此阶段,数字为int>=0
System.out.println(“用户输入:+编号”);
打破
}
}

不会
Scanner.nextInt
在输入不是数字的情况下引发异常?捕获该异常会更容易,对吗?@JayanthKoushik-但这不是正确的方法。。当您可以在没有异常的情况下执行代码时,为什么要捕获异常?@JayanthKoushik可能是字符串以整数开头,但也包含其他字符。因此它也不会检查是否给出了一个double,因为它会在整数的末尾截断。它还会破坏进一步的输入。@coolcat007:是的,没错。因此,nextLine()是一条出路。@KisHanSarsecHaGajjar“scannerInstance.hasNextInt()
”与我之前描述的nextInt的原因相同。这意味着您还必须检查缓冲区的其余部分是否为空(输入扫描程序是否遇到换行?),以及该值是否为负值。如果您可以使用一行代码
s.matches(\\d+”)
感谢您的帮助,那么就不需要编写更多的代码行了!但是我应该在哪里添加代码呢?我尝试添加它,但出现了一个错误。请将您的代码添加到我的代码中,然后回复。再次感谢!替换行
整数i=scan.nextInt()
)添加一行
int=Integer。parseInt(s)非常感谢!它现在编译并运行良好!请不要忘记帮助您的答案。负整数呢?在检查它是否为整数后,需要额外检查负整数。
System.out.println("Please enter a number");

try (Scanner scan = new Scanner(System.in)) {
    while (scan.hasNext()) {
        int number;
        if (scan.hasNextInt()) {
            number = scan.nextInt();
        } else {
            System.out.println("Please enter a valid number");
            scan.next();
            continue;
        }

        if (number < 0) {
            System.out.println("Please enter a number > 0");
            continue;           
        }

        //At this stage, the number is an int >= 0
        System.out.println("User entered: " + number);
        break;
    }
}
boolean valid = false;
double n = 0;
String userInput = "";
Scanner input = new Scanner(System.in);

while(!valid){
    System.out.println("Enter the number: ");
    userInput = input.nextLine();

    try{
        n = Double.parseDouble(userInput);
        valid = true;
    }
    catch (NumberFormatException ex){
        System.out.println("Enter the valid number.");
    }
}