为什么使用scanner输入时,有时候需要默认输入值为-1


public int menu(){
System.out.println("根据提示输入功能序号:");
System.out.println("1,管理员");
System.out.println("2,普通用户");
System.out.println("0,退出");
String s = input.nextLine();
int funcNum = -1;
try{
funcNum = Integer.parseInt(s);
}catch (NumberFormatException e){
return menu();
}
if(funcNum < 0 || funcNum > 2){
return menu();
}
return funcNum;
}


  1. 作用域问题,你需要在try-catch中使用funcNum和在外部也要使用funcNum,则需要在try-catch外部定义funcNum,否则外部是访问不到的。
  2. 赋初值,初值选-1是因为-1不在[0, 1, 2]中,不影响你的方法,其实初值是根据你的需求来的,无所谓,默认0退出也行,默认1为管理员也行,默认2普通用户也行。