Java语言问题。
publicstaticint[]input(intlength){Scannerscanner=newScanner(System.in);int[]array=new...
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) {
System.out.println("只能输入整数!");
i--;
continue;
}
array[i]=in;
}
return array;
}
如何解决让他正确走到try里? 展开
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) {
System.out.println("只能输入整数!");
i--;
continue;
}
array[i]=in;
}
return array;
}
如何解决让他正确走到try里? 展开
展开全部
呵呵,楼主这是一个很经典的问题。
【效果图】
如果调用input(3)
结果如下:
1>5
2>2.1
只能输入整数!
2>2
3>1
【正确的源代码】
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类型了。
晚安!
【效果图】
如果调用input(3)
结果如下:
1>5
2>2.1
只能输入整数!
2>2
3>1
【正确的源代码】
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类型了。
晚安!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询