2013-08-26 3 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

Что сказал Кейт, плюс ваш блок-тест 'if' на' totalHours', вероятно, должен быть вне цикла. –

+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 у водопроводчика. (Plumber.java:52) на Plumber.main (Plumber.java:76), который находится здесь: totalHours + = hours [counter]; –

+0

Проверьте мой комментарий к вашему OP ... это произойдет потому, что переменная счетчика, когда выходит из первого цикла, равна 5, тогда как в вашей ячейке часов [] нет переменной. I. нет часов [5] == 6-й элемент –

+0

@ H-Patel, я последовал вашему предложению, но все равно получаю ту же ошибку времени выполнения ... –

Смежные вопросы