學習了一點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);
}
這段代碼錯誤太多!
1.java的main函數啟動參數是在執行時一次性傳入的;
2.出現死循環的dowhile;
3.代碼如果需要健壯,那麼參數個數是必須要判斷的其長度的;
建議:
1.循環使用數組長度界定;
2.如果要逐個寫入參數執行可以調用標准控制台輸入System.in,當然Scanner對輸入流進行了封裝,使用也方便;
這樣就可以實時在程序執行中對輸入的命令執行想要的操作。
希望可以幫到你。