Я просто действительно изучаю Java, просматривая учебники в книге «Java, как программировать» Deitel и Deitel, поэтому, пожалуйста, простите любые основные ошибки I ' м. Я понимаю, что моя методология может быть не лучшей, но я надеюсь ее улучшить.Неправильно выполняется как «if», так и «else» в цикле While в Java
Моя проблема: я считаю, что неправильно построила свою программу. При выполнении программы выводятся параметры IF и ELSE.
Если кто-нибудь может сказать мне, почему оба варианта исполнения было бы очень признателен
Deepend
package controlStatments;
import java.util.Scanner;
public class Review_4_20
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
//Declare Variables
double employeeOneRate;
double employeeOneHours;
double employeeTwoRate;
double employeeTwoHours;
double employeeThreeRate;
double employeeThreeHours;
int calculator;
double employeeOneTotalPay;
double employeeOneNormalPay;
double employeeOneTotalPayOverTime;
double overTimeRate;
//Initiate Variables
employeeOneRate = 0;
employeeOneHours = 0;
employeeTwoRate = 0;
employeeTwoHours = 0;
employeeThreeRate = 0;
employeeThreeHours = 0;
calculator = 0;
employeeOneTotalPay = 0;
employeeOneTotalPayOverTime = 0;
overTimeRate = 1.5;
employeeOneNormalPay = 0;
//Create While Loop
while (calculator != -1)
{
//Prompt user to input details
System.out.print("\n\nPlease input the first employees rate");
employeeOneRate =input.nextDouble();
System.out.print("Please input the first employees Hours");
employeeOneHours =input.nextDouble();
if (employeeOneHours <= 40)
{
employeeOneTotalPay = employeeOneHours * employeeOneRate;
System.out.printf("\nNormal time pay is: %.2f", employeeOneTotalPay);
}
else
employeeOneNormalPay = employeeOneRate * 40;
employeeOneTotalPayOverTime = (employeeOneHours - 40) * (employeeOneRate * overTimeRate) + employeeOneNormalPay;
System.out.printf("\n\nTotal Pay including Overtime is: %.2f", employeeOneTotalPayOverTime);
}
}
}
P.S. Java позволяет инициализировать переменные inline; то есть вместо объявления и инициализации вы можете просто объявить И инициализировать в одной строке: double overTimeRate = 1.5; Это сделает ваш пример очень удобочитаемым. –
Спасибо Arturs, что поможет много – Deepend