无法访问我的阵列

时间:2014-03-18 20:16:32

标签: java arrays

我的程序是使用Java创建一个Train Route Finder,首先作为命令行程序然后转换为GUI。这是我现在最担心的事情。我目前停留在我的系统的一个功能上,那就是显示用户先前输入的两个站点之间的停靠列表。

现在,我已经能够提示用户选择他们的停靠点(我的代码中的第3,149 - 3,171行):

if(deptChoice == 1 && arrChoice == 2){

    List<String> stopList1_2 = new ArrayList<String>();
    Scanner stopPick = new Scanner(System.in);
    stopPick.useDelimiter(System.getProperty("line.separator"));

    do {
        System.out.println("\nCurrent list of stops between Leicester to Loughborough is:\n\n" + stopList1_2);
        System.out.println("\nWould you like to add a new stop? (Please enter 'Yes' or 'No')\n");

        if (stopPick.next().startsWith("Yes")) {
            System.out.println("\nPlease type in the stop you wish to add to the route:\n");
            stopList1_2.add(stopPick.next());
        }

        else {
            break;
        }

    } while (true);

    String[] stopArr1_2 = stopList1_2.toArray(new String[0]);
    System.out.println("\nCurrent stops between Leicester to Loughborough is:\n\n" + Arrays.toString(stopArr1_2));

}

并将他们输入的停靠点添加到数组中。当他们对站之间的停止量感到满意时,循环结束,并显示站X和站Y之间的站点阵列。

然而,问题出现了:

然后,我希望能够访问此先前创建的数组,并在我的代码中继续进行所有精确停止。在这个“if”语句中,如果满足,那么我希望显示数组(stopArr1_2)(在第3,019 - 3,021行):

if(deptChoice == 1 && arrChoice == 2){
    System.out.println(""); //this should be where I call the array back to display itself
}

因为这些停靠点与用户选择deptChoice == 1(Station 1 = Leicester)对应arrChoice == 2(Station 2 = Loughborough)。

我希望这很清楚:

我基本上希望用户输入的停靠点阵列在选择列车路线时重新出现。

这是他在Notepad ++中创建的完整代码我认为看到我的所有代码而不是小段并且它被评论会更好。

此外,要理解我的问题,请运行我的程序。要理解我的问题,请执行以下操作:

1)编译Train.java(javac Train.java)

2)运行程序(java Train)

3)选择管理员菜单(编号5)

4)选择输入菜单(编号1)

5)选择任意两个电台

6)输入几个站点,直到你满意为止

7)当它显示这两个电台的最终停止阵列时,程序似乎结束,所以希望这不是问题

8)再次运行程序(java Train)

9)挑选列车路线(3号)

10)以与之前相同的顺序选择SAME电台,这样它就能找到你刚制作的阵列

11)现在什么也没发生,因为那是我的问题。我不知道如何重新获得我刚刚为它制作的数组。

下载我的Train.java文件的链接(如果需要,还有Train.txt文件):

https://www.dropbox.com/s/7dy0pp9vyykwhrk/TrainJava.rar

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您的第二个代码块的位置是什么? (您说您需要访问List<String> stopList1_2)的代码?

1如果它在相同的类但在不同的方法中,那么

移动此声明 List<String> stopList1_2 = new ArrayList<String>();(目前在您的第一个代码块中)到类字段。

BUT

2如果它在同一个类中,并且与第一个代码块的方法相同,那么

移动此声明 List<String> stopList1_2 = new ArrayList<String>();(当前在if代码声明中)if条件之外。

但请将此视为您手头问题的快速配方。更重要的是 - 请阅读variable scoping rule and access specifiers in java