tina_leo 2016-03-28 13:26 采纳率: 50%
浏览 1591
已采纳

java中命令行参数的问题

学习了一点java ,写程序时遇到一个问题,想让从命令行中读取的参数来指导下一步工作可以吗?

下面是我写的实现优先级队列的一个主函数,总是报错说“Exception in thread "main" the current array has been sortes,now you can execut four commend like:Maximum”
java.lang.ArrayIndexOutOfBoundsException: 0
at com.nana.Queues.main(Queues.java:72)

 public static void main(String[] args){
            System.out.println("the current array has been sortes,now you can execut four commend like:Maximum,");
            int i=0;
            Queues Qu=new Queues();
            Qu.BUILDMAXHEAP(A);
            do{
            switch(args[i]){
                case "Maximum":Qu.Maximum(A);break;
                case"Extract-max":Qu.Extractmax(A);break;
                case"increasekey":System.out.println("please input the number you want to increase and the target:");
                Qu.Increasekey(A, Integer.parseInt(args[i+1]), Integer.parseInt(args[i+2]));break;
                case "exit":i=-2;break;
                case"insert":System.out.println("please input the number you want to insert:");
                    Qu.Insert(A,Integer.parseInt(args[i+1]) );break;
            }
            i++;
        }while(i!=-1);
        } 
  • 写回答

4条回答 默认 最新

  • little_how 2016-03-29 09:28
    关注

    这段代码错误太多!
    1.java的main函数启动参数是在执行时一次性传入的;
    2.出现死循环的dowhile;
    3.代码如果需要健壮,那么参数个数是必须要判断的其长度的;

    建议:
    1.循环使用数组长度界定;
    2.如果要逐个写入参数执行可以调用标准控制台输入System.in,当然Scanner对输入流进行了封装,使用也方便;
    这样就可以实时在程序执行中对输入的命令执行想要的操作。

    希望可以帮到你。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?