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