如何检查输入的输入是否为整数,如果没有则忽略非整数值并显示其余数字。
我已完成完整编码但是检查输入是否为整数然后打印该值。我该怎么办?
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);
}
}
}
}
答案 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();
来读取当前行(不是整数)并继续下一行(新输入),否则扫描器将无法继续其位置。