Java 一些';隐藏的';阵列位置内的错误(可能)

Java 一些';隐藏的';阵列位置内的错误(可能),java,arrays,Java,Arrays,我的任务是为这项实验任务制定一个计划。只是出了点问题,但没有语法错误。以前,如果我立即输入正确的员工ID,它会给我一个错误代码,但现在不管它是真是假,它总是在那一行给我错误 我几乎什么都试过了。我试着删除支票ID,然后立即前往查找时间等等。我尝试了几种方法来解开我的代码,但问题依然存在。我怀疑问题出在检查ID或阵列位置上。我试着重读了好几遍,但不管怎样,对我来说都很好 package lab09q2; import java.util.Scanner; import java.lang.*;

我的任务是为这项实验任务制定一个计划。只是出了点问题,但没有语法错误。以前,如果我立即输入正确的员工ID,它会给我一个错误代码,但现在不管它是真是假,它总是在那一行给我错误

我几乎什么都试过了。我试着删除支票ID,然后立即前往查找时间等等。我尝试了几种方法来解开我的代码,但问题依然存在。我怀疑问题出在检查ID或阵列位置上。我试着重读了好几遍,但不管怎样,对我来说都很好

package lab09q2;

import java.util.Scanner;
import java.lang.*;

public class Main {

    public static void main (String[]args) {

        Scanner input = new Scanner (System.in);
        Payroll p = new Payroll ();

        System.out.print("Enter the employee ID: ");
        int ID = input.nextInt();

        p.checkID(ID);
        p.setHours();
        p.setPayRate();
        p.getWages();

    }

}
逻辑:

package lab09q2;

import java.util.Scanner;
import java.lang.*;

public class Payroll {

    //Variables
    int[] employeeID = {5658845, 4520125, 789122, 8777541, 8451277, 1302850, 7580489};
    int[]hour = new int[7];
    double[] hourRate = new double[7];
    double[] grossWage = new double[7];
    private int id, location, hours, temp;
    private double payRate, temp1;

    public void checkID(int ID) {
        boolean met = false;
        Scanner input = new Scanner (System.in);

        while (met == false) {
            for (int i = 0; i < employeeID.length; i++) {
                if (ID == employeeID[i]) {
                    met = true;
                    id = ID;
                    break;
                }
                else {
                    continue;
                }
            }

            if (met == false) {
                System.out.println("ID does not match. Please try again.");
                System.out.print("Enter employee's ID: ");
                ID = input.nextInt();
            }
        }

    }

    public void setHours () {

        Scanner input1 = new Scanner (System.in);

        for (int i = 0; i < employeeID.length; i++) {
            if (id == employeeID[i]) {
                location = employeeID[i];
                break;
            }
            else {
                continue;
            }
        }

        System.out.print("Enter the number of hours this employee work: ");
        temp = input1.nextInt();
        boolean test1 = false;
        while(test1 == false) {
            if(temp < 0) {
                System.out.print("Enter a positive value only: ");
                temp = input1.nextInt();
            }
            else {
                test1 = true;
            }
        }

        hour[location] = temp;

    }

    public void setPayRate () {

        Scanner input2 = new Scanner (System.in);

        for (int i = 0; i < employeeID.length; i++) {
            if (id == employeeID[i]) {
                location = employeeID[i];
                break;
            }
            else {
                continue;
            }
        }

        System.out.print("Enter the hourly rate for this employee: ");

        temp1 = input2.nextInt();
        boolean test1 = false;
        while(test1 == false) {
            if(temp1 < 6.0) {
                System.out.print("Enter a value greater than $6.0: ");
                temp1 = input2.nextInt();
            }
            else {
                test1 = true;
            }
        }

        hourRate[location] = temp1;

    }

    public void getWages () {

        for (int i = 0; i < employeeID.length; i++) {
            if (id == employeeID[i]) {
                location = employeeID[i];
                break;
            }
            else {
                continue;
            }
        }

        grossWage[location] = hourRate[location] * hour[location];

        System.out.printf("Employee #%d's salary is %.2f", employeeID[location], grossWage[location]);

    }

}
包装lab09q2;
导入java.util.Scanner;
导入java.lang.*;
公共类工资单{
//变数
int[]employeeID={5658845445201257891228777541845127713028507580489};
整数[]小时=新整数[7];
双[]小时=新双[7];
double[]grossWage=新的double[7];
私人内部id、位置、时间、温度;
私人双倍工资率,temp1;
公共无效检查ID(内部ID){
布尔met=false;
扫描仪输入=新扫描仪(System.in);
while(met==false){
for(int i=0;i
程序应该如何工作是,我将输入ID,程序将首先检查它。如果它存在于数据库中,那么就可以继续下一步。否则,它将一直询问,直到用户的输入与employeeID数组中的输入匹配为止

然后,它将询问员工已完成的小时数。进行验证以确保用户未输入负值。此值将存储到小时数组中,其位置与员工id位置一致

然后它会询问小时费率。验证值是否小于6。同样的事情也适用于这个:值将存储到hourrate数组中


最后,getSweages方法将简单地尝试从数组中提取值,并计算将存储到grossWage数组中的工资。然后它会显示出来。

你能让问题标题更能描述问题吗?你能描述出问题的具体原因吗?你看到了什么输出,你想看到什么?“现在不管它是真是假,它总是在那一行给我错误信息。”什么错误代码,在哪一行?但是错误信息是什么?共享您看到的纯文本输出。@kacperWolkowski,真是糟糕。坚持如果是那样的话,我真的会羞愧而死。。等待编辑:是的。这就是问题所在。我不知道该怎么感谢你。我真的花了30分钟的时间感到沮丧,问题只是那个笨拙的错误。谢谢。你救了我。