码迷,mamicode.com
首页 > 其他好文 > 详细

上一题的解答(转载)

时间:2017-03-26 16:05:43      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:util   return   turn   字符串   inpu   pre   text   main   ++   

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类型了。



上一题的解答(转载)

标签:util   return   turn   字符串   inpu   pre   text   main   ++   

原文地址:http://www.cnblogs.com/Leslee-7/p/6623042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!