2017-04-22 73 views
0

好的,所以我剛開始在大學裏學習java,而這個代碼讓我煩惱。基本上,我的教授要求我們寫這將有將存儲六個城市之間的距離,兩dementional陣列中的代碼,它是這樣的:我只是不能讓這個java代碼工作

array

然後,我們就必須收集信息關於簡單數組中用戶的路由,例如。 1 5 4 3 2 1.

並且根據用戶通知的數字,我們將必須計算他駕駛的總距離。

這是我寫的:

package routes; 

import java.util.*; 


public class Routes { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     int[][] km = {{0, 20, 32, 45, 85, 90}, {20, 0, 20, 40, 65, 70}, {32, 20, 0, 25, 48, 49}, 
         {45, 40, 25, 0, 39, 52}, {85, 65, 48, 39, 0, 36}, {90, 70, 49, 52, 36, 0}}; 

     int[] routes = new int[6]; 
     String[] route_r = new String[6]; 
     String[] city = {"Belo Horizonte", "Contagem", "Betim", "Juatuba", "Pará de Minas", "Itaúna"}; 
     int km_distance = 0; 

     for(int i = 0; i < 6; i++){ 
      for(int j = 0; j < 6; j++){ 
       System.out.printf("%d\t", km[i][j]); 
      } 
      System.out.printf("\n"); 
     } 

     System.out.println("Enter your route: \n\n1. Belo Horizonte\t2. Contagem\t3. Betim\n" 
        + "4. Juatuba\t5. Pará de Minas\t 6.Itaúna\n"); 

     for(int i = 0; i < 6; i++){ 
      rota[i] = input.nextInt(); 
     } 

     System.out.println("\nRoute: \n"); 

     for(int i = 0; i < 6; i++){ 
      System.out.printf("%d. %s\n", i+1, city[route[i]-1]); 
     } 

     for(int i = 0; i < 6; i++){ 
      km_distance = km_distance + km[route[i]][route[i+1]]; 
     } 

     System.out.printf("\nTotal KM: %d\n", km_distance); 
    } 
} 

但不知什麼原因,這是行不通的。我調試它,我意識到最後的結構只循環四次,然後崩潰。請發送幫助。

編輯:輸出誤差

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 
    at rotas.Rotas.main(Rotas.java:41) 
C:\...\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 
RUN FAILED (exit value 1, total time: 47ms) 
+0

請發帖輸出錯誤 – MigSena

+0

另外這個不能是實際的代碼,這個不會編譯 – UnholySheep

+0

歡迎來到Stack Overflow!看起來你可能會問作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 (即使這不是家庭作業,請考慮建議) –

回答

1

看來,正確的變量名是rotaroute。無論如何,在這條線:

km_distance = km_distance + city[route[i]][route[i+1]]; 

您正在訪問的索引i+1這將是7在循環的結束。它必須給你一個超出範圍的例外。

+0

'city'是一個String []',因此'city [route [i]] [route [i + 1]]'無法編譯 - 你不能在Java中使用'[]'訪問'String'的元素 – UnholySheep

+0

我剛剛意識到我的錯誤並改變了它,我用公里[route [i]] [route [i + 1]]代替,仍然不工作,儘管 – thatsadkatyperrymeme

+0

You仍然試圖訪問'route [i + 1]',這會給你例外。您必須相應地編寫代碼以保持索引在範圍內。 – whbogado

相關問題