首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java程序从命令行获取输入,并进行异常处理

Java程序从命令行获取输入,并进行异常处理
EN

Stack Overflow用户
提问于 2015-04-14 12:32:55
回答 5查看 11.5K关注 0票数 1

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

我的代码是:

代码语言:javascript
运行
复制
 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”

见下图:

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-04-14 12:37:14

如果通过22 22kjj,args将有两个元素:2222kjj

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

票数 4
EN

Stack Overflow用户

发布于 2015-04-14 12:38:04

调用程序时,

java Age2 22 22 Age2

您将获得"22“和”22 get“作为程序参数数组的单个成员:

  1. args[0]包含"22“
  2. args[1]包含“22”

因为您只检查了args[0],所以您不会发现格式错误的args[1]有任何问题。也许还需要检查参数数组的长度:

代码语言:javascript
运行
复制
if (args.length != 1) {
    System.out.println("Please enter exactly one number!");
}

调用您的程序

代码语言:javascript
运行
复制
java Age2 "22 22kjj"

或使用

代码语言:javascript
运行
复制
java Age2 "22kjj"

会给你想要的输出。

票数 3
EN

Stack Overflow用户

发布于 2015-04-14 12:36:41

程序仍将正常工作,因为您引用了args[0],命令行中的args由空格分隔,因此即使添加其他参数,也始终是22。

您可以简单地验证年龄是唯一给定的参数。

代码语言:javascript
运行
复制
if(args.length > 1)
   throw new Exception();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29627430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档