输入正确的数字,使用try…catch包裹异常
import java.util.InputMismatchException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* およそ神
*/
public class demo11zhengze {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
int num;
Pattern p = Pattern.compile("^\\d+$"); //匹配1位及多位的数字
while (true) {
System.out.println("请输入一个数");
String a = input.next();
Matcher matcher = p.matcher(a);
if (!matcher.matches()){
System.out.println("输入的数不合法,请重新输入");
continue;
} else {
num = Integer.parseInt(a);//将数字的字符串转换为int
break;
}
}
System.out.println("输入的数字为:" + num);
System.out.println("调用方法输出:"+getNumber());
}
private static int getNumber(){
try {
System.out.println("请输入一个数");
int num = input.nextInt();
return num;
} catch (InputMismatchException e) {
System.out.println("输入有误,请重新输入");
input = new Scanner(System.in);
return getNumber();
}
}
}
最后实现效果:当输入错误时,让其一直重复输入,最后拿到最终结果并且输出
输入电话号码,当输入错误的时候循环让其一直输入
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* およそ神
*/
public class demo11zhengze {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
String phone;
Pattern phone_pattern = Pattern.compile("^1[356789]\\d{9}$");
while (true) {
System.out.println("请输入一个电话号码");
String string = input.next();
Matcher matcher = phone_pattern.matcher(string);
if (!matcher.matches()) {
System.out.println("电话号码不合法");
continue;
} else {
phone = string;
break;
}
}
System.out.println("输入的电话为:" + phone);
}
}