Программа работает нормально, если все данные введены правильно. но, как вы видите ниже, я сделал 2, если выписки для часов должны быть между 0 и 60 и скоростью от 0 до 50, когда я делаю часы или скорость вне их диапазона, программа просто выходит из для l oop и перезапускается с того момента, как l oop.
я сделал эту программу раньше, не используя массивы, и программу, использовавшуюся для возврата к указанному c оператору if, который имеет неправильное введенное значение и более старые значения для каждого вещь все еще сохранена и может быть использована в конечном процессе без каких-либо ошибок.
см. здесь в комментариях к рабочему коду, который я не использовал, метод массивов
import java.util.Scanner;
public class homework3_Arrays
{
public static void main(String[] args)
{
int emp_num, flag=0;
Scanner kb = new Scanner(System.in);
while(flag == 0)
{
System.out.printf("Please enter employees number\n");
String[]emp1 = new String[emp_num];
String[]emp2 = new String[emp_num];
String[]emp3 = new String[emp_num];
double[]hours = new double[emp_num];
double[]rate = new double[emp_num];
double[]gross = new double[emp_num];
double[]overtime = new double[emp_num];
double[]STtax = new double[emp_num];
double[]FEDtax = new double[emp_num];
double[]union = new double[emp_num];
double[]net = new double[emp_num];
double[]Tgross = new double[emp_num];
double[]Agross = new double[emp_num];
for(int i = 0; i < emp_num; i++)
{
System.out.printf("please enter the employee first name\n ");
emp1[i] = kb.next();
System.out.printf("please enter the employee middle initial\n ");
emp2[i] = kb.next();
System.out.printf("please enter the employee last name\n ");
emp3[i] = kb.next();
System.out.printf("please enter worked hours\n ");
hours[i] = kb.nextDouble();
if(hours[i] >= 0 && hours[i] <= 60)
{
System.out.printf("please enter the pay rate\n ");
rate[i] = kb.nextDouble();
if(rate[i] > 0 && rate[i] <= 50)
{
if(hours[i] <= 40)
overtime[i] = 0;
else
overtime[i] = (hours[i] - 40) * rate[i] * 1.5;
gross[i] = (rate[i] * 40) + overtime[i];
STtax[i] = gross[i] * 0.06;
FEDtax[i] = gross[i] * 0.12;
union[i] = gross[i] * 0.01;
net[i] = gross[i] - (STtax[i] + FEDtax[i] + union[i]);
System.out.printf("hi %s%s%s\n", emp1[i], emp2[i], emp3[i]);
System.out.printf("worked hours %6.2f\n", hours[i]);
System.out.printf("your pay rate $%2.4f\n", rate[i]);
System.out.printf("OverTime is %2.2f\n", overtime[i]);
System.out.printf("Gross income $%6.2f\n", gross[i]);
System.out.printf("State tax $%6.2f\n", STtax[i]);
System.out.printf("Federal tax $%6.2f\n", FEDtax[i]);
System.out.printf("Union fees $%6.2f\n", union[i]);
System.out.printf("NET $%6.2f\n", net[i]);
}
else
System.out.printf("Pay Rate can only be between 0 and 50\n");
Tgross[i] = Tgross[i] + gross[i];
Agross[i] = Tgross[i] / (i + 1);
System.out.printf("Total gross for all entered employees is $%6.3f\n", Tgross[i]);
System.out.printf("Average gross for all entered employees is $%6.4f\n", Agross[i]);
System.out.printf("number of entered employees is %d\n\n", i + 1);
}
else
System.out.printf("Hours can only be between 0 and 60\n");
}
System.out.printf("type 0 to repaeat\n");
flag = kb.nextInt();
}
}
}