2013-08-26 35 views
1

我在获取数组中整数的总和以及获取整数乘积* 1.5的问题时出现问题。我的下面的代码可能是完全关闭的,因为我是Java新手,并且已经在这里工作了好几个小时。该计划的目的是输入每天工作5天的工作小时数。有了这个和工资率,你应该输出平均工作小时数,总小时数和总工资。如果有工资,工资也应该包括加班费。任何帮助,将不胜感激。数组中的整数和整数乘以1.5的总和

String name; 
String id; 
int payRate; 
int[] hours = new int[5]; 
int avgHours; 
int totalPay; 
int totalHours = 0; 
int counter; 
int overTime = 0; 

//housekeeping 
System.out.print("Enter the Employee's name: "); 
inputString = input.readLine(); 
name = inputString; 

System.out.print("Enter the Employee's ID: "); 
inputString = input.readLine(); 
id = inputString; 

System.out.print("Enter the Employee's pay rate: "); 
inputString = input.readLine(); 
payRate = Integer.parseInt(inputString); 

//hoursPay 
counter = 0; 
for(hours[counter] = 0; counter < 5; counter++) 
{ 
    System.out.print("How many hours did the employee work? "); 
    inputString = input.readLine(); 
    hours[counter] = Integer.parseInt(inputString); 
}//endfor 
    for(totalHours = 0; counter < 5; hours[counter]++); 
    { 
     totalHours += hours[counter]; 
     if(totalHours > 40) 
     { 
      overTime = payRate + (payRate/2); 
     }//endif 
    }//endwhile 

//print 
if(counter == 5) 
{ 
    System.out.println(name + " " + id + " $" + payRate + "/hour"); 

    avgHours = totalHours/counter; 
    totalPay = totalHours * payRate + overTime; 
    System.out.println... 
    System.out.println... 
    System.out.println... 
+4

您不会在while循环内增加计数器。 – Keith

+0

Keith说,再加上'totalHours'上的'if' block测试可能应该在循环之外。 –

+0

为了将来的参考,您希望获得关于“问题”的更多技术信息。 –

回答

0

@ bp_1, 我又重新做所有的代码,并粘贴下面它。有用。编码时出现了一些基本错误。将您的代码与我的代码进行比较,您将看到不同之处。

String name; 
String id; 
int payRate; 
int[] hours = new int[5]; 
int avgHours; 
int totalPay; 
int totalHours = 0; 
int counter; 
int overTime = 0; 
Scanner input = new Scanner(System.in); 
//housekeeping 
System.out.print("Enter the Employee's name: "); 
String inputString = input.nextLine(); 
name = inputString; 

System.out.print("Enter the Employee's ID: "); 
inputString = input.nextLine(); 
id = inputString; 

System.out.print("Enter the Employee's pay rate: "); 
inputString = input.nextLine(); 
payRate = Integer.parseInt(inputString); 

//hoursPay 
counter = 0; 
for (hours[counter] = 0; counter < 5; counter++) { 
System.out.print("How many hours did the employee work? "); 
inputString = input.nextLine(); 
hours[counter] = Integer.parseInt(inputString); 
}//endfor 

counter = 0;// reset counter here 
for (totalHours = 0; counter < 5; counter++) { 
totalHours += hours[counter]; 
if (totalHours > 40) { 
overTime = payRate + (payRate/2); 
}//endif 
}//end of for loop 

if (counter == 5) { 
System.out.println(name + " " + id + " $" + payRate + "/hour"); 
avgHours = totalHours/counter; 
totalPay = totalHours * payRate + overTime; 
System.out.println("Average Hours: " + avgHours); 
System.out.println("Total pay: " + totalPay); 
System.out.println("Total Hours: " + totalHours); 
System.out.println("Overtime ($): " + overTime); 
}//end of if 
+0

你不必去所有的麻烦,但它是非常感激。我现在会比较两者,以便从错误中学习。 –

+0

@ bp_1匆忙中,我忘了告诉你,我故意在程序中留下了一个逻辑错误。提示,它是** **加班**计算。试着解决它,你会学到一些更多的Java。 –

+0

今天早些时候我发现了这个错误。再次感谢你的帮助 –

0

代替

for(totalHours = 0; counter < 5; hours[counter]++); 

写的

for(counter = 0; counter < 5; counter++) 
  1. 分号删除。
  2. counter递增,而不是hours[counter]
+0

它继续给我这个运行时错误:线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5 at Plumber。 (Plumber.java:52) 在位于这里的Plumber.main(Plumber.java:76):totalHours + = hours [counter]; –

+0

检查我对你的OP的评论......这将是因为退出第一个循环时的计数器变量是5,而在你的小时[]数组中该位置没有变量......即,没有小时[5] ==第六元素 –

+0

@ H-Patel,我遵循你的建议,但仍然得到相同的运行时间错误... –