首页 > 代码库 > 上一题的解答(转载)
上一题的解答(转载)
import java.util.InputMismatchException;
import java.util.Scanner;
public class hi
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
input(3);
}
public static int[] input(int length)
{
Scanner scanner = new Scanner(System.in);
int[] array = new int[length];
int in = 0;
for (int i = 0; i < length; i++)
{
System.out.print((i + 1) + ">");
try
{
in = scanner.nextInt();
}
catch (InputMismatchException e)
{
i--;
System.out.println("只能输入整数!");
//上次输错的那个数据还在缓冲流中。定义一个字符串变量把它读走就完了。
String clear=scanner.next();
continue;
}
array[i] = in;
}
return array;
}
}
【解释】
1、你的死循环
每次catch发现错误后。i--确实没有问题,从截图可以看出你的i确实没有动。
但是还是继续提示”数据不是合法整数“。这是上一次输入错误的那个还留在输入管道中没有取走。所以会一致死循环错下去。应为你的i原定不动了。
2、解决办法
catch里,我们定义一个Sting类型的变量,把输入错误的那个数读出来。考虑输入的都可以看成字符串,所以就用String类型了。
上一题的解答(转载)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。