如何在java中检查输入的输入是否为整数?

时间:2018-05-13 18:27:50

标签: java

如何检查输入的输入是否为整数,如果没有则忽略非整数值并显示其余数字。

我已完成完整编码但是检查输入是否为整数然后打印该值。我该怎么办?

import java.util.Scanner;
class ques2
{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int i,j;
        System.out.print("how many number you want to enter= ");
        i=sc.nextInt();
        int input[]=new int[i];
        System.out.println("Numbers should be great then 3");
        for(j=0;j<i;j++)
        {
            input[j]=sc.nextInt();
        }
        System.out.println("Number entered are:");
        for(j=0;j < i;j++)
        {
            System.out.println(input[j]);
        }  
        System.out.println("Odd numbers are:");
        for(j=0;j < i;j++)
        {
            if(input[j] % 2 != 0)
            {
               System.out.println(input[j]); 
            }     
        }
        System.out.println("Palindrome numbers are:");
        for(j=0;j < i;j++)
        {
            int rev=0,n,num;
            n=input[j];
            while(input[j] > 0)
            {
                num=input[j] % 10;
                rev=num+(rev*10);
                input[j]=input[j]/10;
            }
            if(n == rev)
            {
                System.out.println(n);
            }
        }   
    }
}

4 个答案:

答案 0 :(得分:0)

你可以采取辅助功能:

  public static boolean checkMe(String s) {
    boolean amIValid = false;
      try {
       Integer.parseInt(s);
    // s is a valid integer!
    amIValid = true;
    } catch (NumberFormatException e) {
    //not an integer but you could continue with the rest numbers
    }
    return invalid;
    }

答案 1 :(得分:0)

您可以通过比较ASCII值来检查它是否介于91到100之间。 如果是,那么它将是一个整数。

答案 2 :(得分:0)

您可以尝试使用String代替int。然后,您可以使用int再次继续Integer.parseInt(x),因为在do-while之后它已被验证为有效整数

String num;
String regex = "[0-9]+";  // to check the string only is made up of digits

Scanner input = new Scanner(System.in);

do {
    System.out.println("Please input an integer");
    num = input.next();
} while (!num.matches(regex));

int validNumber = Integer.parseInt(num);
/* .
   .
   .  *\

答案 3 :(得分:0)

您已经在使用x()内部执行正则表达式检查,如@ snr的帖子和sc.nextIn(),如charly1212的帖子。

您应该添加的唯一内容是将其包装在

Integer.parseInt

处理输入不是int的所有情况(包括值&gt; Integer.MAX_VALUE和&lt; Integer.MIN_VALUE)

解决方案看起来像这个方法,封装了所有输入读数

try {
  int i = sc.nextInt();
} catch(InputMismatchException e) {
  //skip or repeat?
}

请注意,异常块调用private static int[] readNumbers() { Scanner sc = new Scanner(System.in); int i = -1; while(i < 0){ try { System.out.print("how many number you want to enter? "); i=sc.nextInt(); } catch (InputMismatchException e){ System.out.println(sc.next() + " is not a number, try again"); } } List<Integer> numbers = new ArrayList<>(); System.out.println("Numbers should be greater then 3"); for(int j = 0; j < i; j++){ try { numbers.add(sc.nextInt()); } catch (InputMismatchException e){ System.out.println("Skipping input " + sc.next()); } } return numbers.stream().mapToInt(Integer::intValue).toArray(); } ... int input[] = readNumbers(); 来读取当前行(不是整数)并继续下一行(新输入),否则扫描器将无法继续其位置。