我只是无法让这个java代码工作

时间:2017-04-22 21:25:19

标签: java arrays sorting arraylist multidimensional-array

好的,所以我刚刚开始在大学里学习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)

1 个答案:

答案 0 :(得分:1)

似乎正确的变量名称为rota而不是route。无论如何,在这一行:

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

您正在访问索引i+1,它将在循环结束时为7。它必须给你一个超出范围异常的索引。