使用变量初始化Ints数组

时间:2015-12-07 04:50:28

标签: java arrays

我想创建一个表示计数器的整数值数组,所以我在main方法中将其初始化为:

int [] counters = new int [7];
        counters [countListAll] = 0;
        counters [countEmployeeReport] = 0;
        counters [countDivisionReport] = ;
        counters [countSalaryReport] = 0;
        counters [countRetirementReport] = 0;
        counters [countMain] = 0;
        counters [countOthers] = 0; 

现在我必须将此数组传递给我的menu()方法,这样每次选择任何选项时我都可以递增每个计数器。

public static void menu(int [] counters)

    {

        System.out.println("You have accessed Menu()");
        System.out.println("Enter 'L' for list of the employee data available. \nEnter 'E' to dislpay information on a particular employee. \nEnter 'D' to display division information. \nEnter 'S' to display salary information. \nEnter 'R' to display retirement information. \nEnter 'Q' to quit Menu and return to Main.");      
        Scanner scan = new Scanner(System.in);
        String first = scan.next();
        char first1 = first.charAt(0);

        if (first1 == 'L'|| first1 =='l'||first1 =='E'||first1 =='e'||first1 =='D'||first1 =='d'||first1 =='S'||first1 =='s'||first1 =='R'||first1 =='r'||first1 =='Q'||first1 =='q')
        {
switch (first1)
                {
            case 'L':
            case 'l':
            listAll();
            counters [countListAll] ++;
            break;

            case 'E':
            case 'e':
            employeeReport();
            counters [countEmployeeReport] ++;
            break;

            case 'D':
            case 'd':
            divisionReport();
            counter [countDivisionReport] ++;
            break;

            case 'S':
            case 's':
            salaryReport();
            counters [countSalaryReport] ++;
            break;

            case 'R':
            case 'r':
            retirementReport();
            counters [countRetirementReport] ++;
            break;

            case 'Q':
            case 'q':
            counters [countMain] ++;
            break;

            else 
            {
                menu();
                countOthers++;
            }
    }

我是否正确初始化数组并正确地将其传递给menu()方法?我可以像这样增加对象吗?

编辑:我更改了代码,这是新代码

主要方法:

 int [] counters = new int [7];
            counters [L] = 0;//listAll
            counters [E] = 0;//employeeReport
            counters [D] = 0;//divisionReport
            counters [S] = 0;//salaryReport
            counters [R] = 0;//retirementReport
            counters [Q] = 0;//quit
        counters [O] = 0;//others

菜单方法:

public static void menu(int [] counters)

    {
        System.out.println("You have accessed Menu()");
        System.out.println("Enter 'L' for list of the employee data available. \nEnter 'E' to dislpay information on a particular employee. \nEnter 'D' to display division information. \nEnter 'S' to display salary information. \nEnter 'R' to display retirement information. \nEnter 'Q' to quit Menu and return to Main.");      
        Scanner scan = new Scanner(System.in);
        String first = scan.next();
        char first1 = first.charAt(0);

        if (first1 == 'L'|| first1 =='l'||first1 =='E'||first1 =='e'||first1 =='D'||first1 =='d'||first1 =='S'||first1 =='s'||first1 =='R'||first1 =='r'||first1 =='Q'||first1 =='q')
        {
            switch (first1)
                {
            case 'L':
            case 'l':
            listAll();
            counters [L] ++;
            break;

            case 'E':
            case 'e':
            employeeReport();
            counters[E]++;
            break;

            case 'D':
            case 'd':
            divisionReport();
            counters [D]++;
            break;

            case 'S':
            case 's':
            salaryReport();
            counters [S]++;
            break;

            case 'R':
            case 'r':
            retirementReport();
            counters [R]++;
            break;

            case 'Q':
            case 'q':
            counters [Q]++;
            break;

                }
        }

        else 
            {
                menu();
                counters [O]++;
            }
    }

和FinalStats方法:

public static void finalStats(int [] counters)
    {
        System.out.println("Number of times listAll() was accessed from menu() is: " + counters[L]);
        System.out.println("Number of times employeeReport() was accessed from menu() is: " + counters[E]);
        System.out.println("Number of times divisionReport() was accessed from menu() is: " + counters[D]);
        System.out.println("Number of times salaryReport() was accessed from menu() is: " + counters[S]);
        System.out.println("Number of times retirementReport() was accessed from menu() is: " + counters[R]);
        System.out.println("Number of times 'Quit' was chosen from menu() is: " + counters[Q]);
        System.out.println("Number of times any other key was pressed in menu() is: " + counters[O]);
    }

1 个答案:

答案 0 :(得分:2)

是的,总的来说。您的countOthers逻辑似乎存在错误。虽然在switch中嵌入if似乎是一个奇怪的选择,但使用简单的if else-if链可以更加可读(并且您可以使用Character.toLowerCase(char)来处理混合案例。像,

if-else

public static void menu(int[] counters) {
    System.out.println("You have accessed Menu()");
    System.out.println("Enter 'L' for list of the employee data available.");
    System.out.println("Enter 'E' to dislpay information on a particular employee.");
    System.out.println("Enter 'D' to display division information.");
    System.out.println("Enter 'S' to display salary information.");
    System.out.println("Enter 'R' to display retirement information.");
    System.out.println("Enter 'Q' to quit Menu and return to Main.");
    Scanner scan = new Scanner(System.in);
    String first = scan.next();
    char first1 = Character.toLowerCase(first.charAt(0));
    if (first1 == 'l') {
        listAll();
        counters[countListAll]++;
    } else if (first1 == 'e') {
        employeeReport();
        counters[countEmployeeReport]++;
    } else if (first1 == 'd') {
        divisionReport();
        counter[countDivisionReport]++;
    } else if (first1 == 's') {
        salaryReport();
        counters[countSalaryReport]++;
    } else if (first1 == 'r') {
        retirementReport();
        counters[countRetirementReport]++;
    } else if (first1 == 'q') {
        counters[countMain]++;
    } else {
        menu();
        counters[countOthers]++; // <-- instead of countOthers++
    }
}

switch-case

也可以用if-else表示上述switch-case链,等等,

switch (Character.toLowerCase(first.charAt(0))) {
case 'l':
    listAll();
    counters[countListAll]++;
    break;
case 'e':
    employeeReport();
    counters[countEmployeeReport]++;
    break;
case 'd':
    divisionReport();
    counter[countDivisionReport]++;
    break;
case 's':
    salaryReport();
    counters[countSalaryReport]++;
    break;
case 'r':
    retirementReport();
    counters[countRetirementReport]++;
case 'q':
    counters[countMain]++;
    break;
default:
    menu();
    countOthers++;
}