判断输入是不是Int?如果不是则提示并重输,用hasNextInt()判断?

fantilong 2016-09-02 04:38:04
/*请问还有更好的方法吗?下面我写了一个方法,不过我觉得太麻烦了!
*/
import java.util.*;
public class XiTi28a{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] num = new int[10];
System.out.println("请输入十个整数");
for(int i = 0;i < 10;i++){
boolean s = true;
while(s){
System.out.print("第 " + (i + 1) + " 个:");
if(input.hasNextInt()){//这里的if条件只能验证一次,
//输入错误则会陷入无限循环
//怎么使他能再次输入?
//只要输入错误则再次输入并验证输入
num[i] = input.nextInt();
s = break;
}else {
System.out.print("输错了请重输:");
}
// if(num[i] != 0){
// s = false;
// }
}
}
}
}



方法二

public class XiTi28{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] num = new int[10];
System.out.println("请输入十个整数");
for(int i = 0;i < 10;i++){
boolean s = true;
while(s){
String a;
System.out.print("第 " + (i + 1) + " 个:");
a = input.next();
try{
num[i] = Integer.parseInt(a);
}catch(NumberFormatException e){
System.out.print("输错了,请重输:");
}
if(num[i] != 0){
s = false;
}
}
}
}
}
...全文
275 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_08_06_02 2016-09-05
  • 打赏
  • 举报
回复
背西风酒旗 2016-09-03
  • 打赏
  • 举报
回复
正则表达式还是挺简单的
cdsn13082487212 2016-09-02
  • 打赏
  • 举报
回复
觉得正则表达式可以,判断当前输入是否是integer对象也行吧
HerveyHall 2016-09-02
  • 打赏
  • 举报
回复
不必使用嵌套循环,那样会增加复杂度,以下是层主强烈推荐的一种相对健壮的方法,
import java.util.Scanner;

/**
 * 判断输入是不是Int?如果不是则提示并重输
 * 
 * @author <a href="www.herveyhall.cf">HerveyHall</a>
 *
 */
public class XiTi28 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int[] num = new int[10];
		System.out.println("请输入十个整数");
		for (int i = 0; i < 10;) {
			System.out.print("第 " + (i + 1) + " 个:");
			String a = input.nextLine();
			if (a.matches("(|\\+|-)[0-9]+"))
				num[i++] = Integer.parseInt(a);
			else
				System.out.println("输错了请重输:");
		}
		input.close();
	}
}
以上

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧