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条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?