再次需要帮助。该程序是根据输入将输入视为年龄并抛出异常。当程序运行时,它将从命令行中占用用户的年龄,如果用户没有在命令行上输入数字或输入错误,程序应该处理问题。
我的代码是:
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 22”或“3 kjhk”
见下图:
你能帮我改一下吗? 谢谢大家。
答案 0 :(得分:4)
如果您通过22 22kjj
,则args将包含两个元素:22
和22kjj
。
您可以添加条件:if(args.length != 1) System.out.println("only one number");
答案 1 :(得分:3)
使用
调用程序时java Age2 22 22kjj
你会得到&#34; 22&#34;和&#34; 22kjj&#34;作为计划论点的个人成员&#39;阵列:
args[0]
包含&#34; 22&#34; args[1]
包含&#34; 22kjj&#34; 由于您只检查了args[0]
,因此对于错误的args[1]
,您不会遇到任何问题。也许你还要检查参数的长度&#39;阵列:
if (args.length != 1) {
System.out.println("Please enter exactly one number!");
}
使用
调用您的程序java Age2 "22 22kjj"
或
java Age2 "22kjj"
将为您提供所需的输出。
答案 2 :(得分:1)
当您引用args[0]
时,程序仍然可以正常运行,并且命令行给出的args用空格分隔,因此即使添加其他参数也总是22。
您可以简单地验证年龄是唯一给定的参数。
if(args.length > 1)
throw new Exception();
答案 3 :(得分:0)
它工作的原因是,因为args[0]
提供了第一个参数。您需要做的是检查args[1]
。
例如
public class Age2 {
public static void main(String args[]){
if(args.length == 1)
{
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");
}
}else{
System.out.println("Pls give a single Number");
}
}//end class
答案 4 :(得分:-2)
你必须这样做
catch(exception e){
e.printstacktrace // or something like that to get your exception
System.out.println("thats not a number")}
现在你拥有它的方式就是告诉程序在出现异常时输出你的字符串。