Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用变量初始化整数数组_Java_Arrays - Fatal编程技术网

Java 使用变量初始化整数数组

Java 使用变量初始化整数数组,java,arrays,Java,Arrays,我想创建一个表示计数器的整数值数组,因此我在main方法中对其进行了如下初始化: int [] counters = new int [7]; counters [countListAll] = 0; counters [countEmployeeReport] = 0; counters [countDivisionReport] = ; counters [countSalaryReport] = 0; coun

我想创建一个表示计数器的整数值数组,因此我在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; 
 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
现在我必须将这个数组传递给我的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 [countListAll] = 0;
        counters [countEmployeeReport] = 0;
        counters [countDivisionReport] = ;
        counters [countSalaryReport] = 0;
        counters [countRetirementReport] = 0;
        counters [countMain] = 0;
        counters [countOthers] = 0; 
 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]++;
            }
    }
和最终测试方法:

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]);
    }

是的,总的来说。您的
countOthers
逻辑似乎存在错误。虽然将
开关
嵌套在
if
中似乎是一个奇怪的选择,但使用简单的
if-else if
链(您可以用来处理混合情况,例如

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++;
}
if-else

你做得对,除了countOthers之外,如果要在数组中维护它,你应该使用counters[countOthers]+@11thdimension谢谢!我修复了它。