Java程序从命令行获取输入,具有异常处理

时间:2015-04-14 12:32:56

标签: java exception-handling

再次需要帮助。该程序是根据输入将输入视为年龄并抛出异常。当程序运行时,它将从命令行中占用用户的年龄,如果用户没有在命令行上输入数字或输入错误,程序应该处理问题。

我的代码是:

 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

我的输出:

Output

但是如果用户犯了任何错误,程序也应该显示异常:

“22 22”或“3 kjhk”

见下图:

Not showing any error....

你能帮我改一下吗? 谢谢大家。

5 个答案:

答案 0 :(得分:4)

如果您通过22 22kjj,则args将包含两个元素:2222kjj

您可以添加条件:if(args.length != 1) System.out.println("only one number");

答案 1 :(得分:3)

使用

调用程序时
  

java Age2 22 22kjj

你会得到&#34; 22&#34;和&#34; 22kjj&#34;作为计划论点的个人成员&#39;阵列:

  1. args[0]包含&#34; 22&#34;
  2. args[1]包含&#34; 22kjj&#34;
  3. 由于您只检查了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")}

现在你拥有它的方式就是告诉程序在出现异常时输出你的字符串。