再次需要帮助。该程序是以输入为年龄,根据输入抛出异常。当程序运行时,它将从命令行获取用户的年龄,如果用户没有在命令行上输入数字或在输入中出错,程序应该处理问题。
我的代码是:
public class Age2 {
public static void main(String args[]){
try{
int age = Integer.parseInt(args[0]); //taking in an integer input throws NumberFormat Exception if not an integer
if(age<= 12)
System.out.println("You are very young");
else if(age > 12 && age <= 20)
System.out.println("You are a teenager");
else
System.out.println("WOW "+age+" is old");
}
catch(NumberFormatException e){ //is input is not an integer, occurs while parsing the command line input argument
System.out.println("Your input is not a number");
}catch(ArrayIndexOutOfBoundsException e){ //as takes in input from command line which is stored to a Args array in main, if this array is null implies no input given
System.out.println("Please enter a number on the command line");
}
}
}//end class我的输出:

但是,如果用户犯了以下错误,程序也应该显示异常:
" 22“或"3 kjhk”
见下图:

你能帮我修改一下这个吗?谢谢大家。
发布于 2015-04-14 12:37:14
如果通过22 22kjj,args将有两个元素:22和22kjj。
您可以添加一个条件:if(args.length != 1) System.out.println("only one number");
发布于 2015-04-14 12:38:04
调用程序时,
java Age2 22 22 Age2
您将获得"22“和”22 get“作为程序参数数组的单个成员:
args[0]包含"22“args[1]包含“22”因为您只检查了args[0],所以您不会发现格式错误的args[1]有任何问题。也许还需要检查参数数组的长度:
if (args.length != 1) {
System.out.println("Please enter exactly one number!");
}调用您的程序
java Age2 "22 22kjj"或使用
java Age2 "22kjj"会给你想要的输出。
发布于 2015-04-14 12:36:41
程序仍将正常工作,因为您引用了args[0],命令行中的args由空格分隔,因此即使添加其他参数,也始终是22。
您可以简单地验证年龄是唯一给定的参数。
if(args.length > 1)
throw new Exception();https://stackoverflow.com/questions/29627430
复制相似问题