如何在Java中创建主菜单?

时间:2014-02-25 07:10:16

标签: java arrays scope submenu

好的,所以我有一个澄清,因为这个问题有点误导! - 我知道如何创建菜单,列出选项并提示输入,阅读用户的输入等。

我遇到的问题纯粹是合乎逻辑的。我需要创建一个包含3个选项的主菜单:

创建具有关联属性的学生“对象”数组

- 搜索列表

-exit

此时,我有布尔操作的while循环,激活“子菜单”。根据他们是否想要创建列表,搜索等,布尔值变为真或假。

(重要的是要知道,我有一个上面的类(学生),其中包含数组的所有属性,如名称,平均成绩等。)我的主程序的总体布局如下:

    while(bMainMenu)
        {
            boolean bList = false;
            boolean bSearch = false;

            [all the code prompting choices]
                -if input is "create" then bList = true;
                -if input is "search" then bSearch = true;
                -if input is "exit" then bMainMenu = false;

            while(bList)
                { 
                    [all the code that creates the array and prompts for student info
                     where the array is as long as the user chooses]
                    bList = false;
                }

            while (bSearch)
                {
                    [all the code for searching the array]
                    bSearch = false;
                }

        }

创建列表后,其他所有内容都为false,并重新循环主菜单。这一次,用户说“搜索”,它使搜索菜单的布尔值为真。

我遇到的问题:引用刚创建的数组。我想知道我需要调用它的地方。据我所知,我刚刚完成所有操作的方式使得数组只包含在“bList循环”中。

我在哪里调用数组使其“可见”到“bSearch”循环?或者我是否需要以不同方式重组一切?

提前致谢!

2 个答案:

答案 0 :(得分:1)

这完全是关于范围的。类似于如何在主外循环中的任何位置访问布尔变量bListbSearchwhile(bMainMenu),您可以类似地声明您的学生数组:

while(bMainMenu) {
   Student[] students;
   boolean bList = false;
   boolean bSearch = false;

   // Remaining code can now access students array as it is in scope
}

然后,您稍后将实例化您的数组,例如:students = new Student[numberStudents]

如果您不知道将提前创建多少学生,或者它是否会继续增加,请考虑使用ArrayList<Student>

答案 1 :(得分:1)

bMainMenu = true;
List<StudentInfo> students = new ArrayList<StudentInfo>();
while(bMainMenu){

    boolean bList = false;
    boolean bSearch = false;

    [all the code prompting choices]
                -if input is "create" then bList = true;
                -if input is "search" then bSearch = true;
                -if input is "exit" then bMainMenu = false;

    while(bList){
        [all the code that creates the array and prompts for student info
                     where the array is as long as the user chooses]

        // Build this student info object based on user parameters
        StudentInfo studentInfo = new StudentInfo(name, class);

        students.add(studentInfo);
    }

    while(bSearch){
        /*      
        Play with "students" arraylist. It is accessible here and contains all studentinfo details added before.
        */
    }
}