-2

我正在尝试替换payRate * hoursWorked为单个变量grossPay,但是当我这样做时,它会为任何计算返回 0.0 的值。double grossPay被故意注释掉,所以你可以看到我想要做什么。

import java.text.*;
import java.util.Scanner;



public class elseIfPayroll{

        public static void main(String[] args){


        double hoursWorked =0.00;
        double payRate =0.00;
        int dependents =0;



        Scanner keyboard = new Scanner(System.in);
        NumberFormat f = new DecimalFormat("#0.00");


            System.out.print("Enter pay rate: ");
            payRate = keyboard.nextInt();

            System.out.print("Enter hours worked: ");
            hoursWorked = keyboard.nextInt();

            System.out.print("Enter amount of dependents: ");
            dependents = keyboard.nextInt();

            double grossPay= (payRate * hoursWorked);

//gross pay decision statements

        if (hoursWorked<=40) {
            System.out.println("Total $ Earned: " + payRate * hoursWorked); 
            }

            else if (hoursWorked >= 40) {
                System.out.println("Total $ Earned: " + payRate * hoursWorked +(payRate * 0.5));
                }

            else if (hoursWorked>=60){
                System.out.println("Total $ Earned: " + payRate * hoursWorked + (payRate * 2));
                }






//else if statements for dependents

        if (dependents == 0){
                    f.format(payRate * hoursWorked);
            }

            else if (dependents == 1){
                    f.format(payRate * hoursWorked - (payRate *                                         hoursWorked*0.04) );
            }

            else if (dependents == 2){
                     f.format(payRate * hoursWorked - (payRate *                                                hoursWorked*0.0775));
            }

            else if (dependents == 3){
                    f.format(payRate * hoursWorked - (payRate *                                                 hoursWorked*0.1125) );
            }

            else if (dependents == 4){
                    f.format(payRate * hoursWorked - (payRate *                                                 hoursWorked*0.145) );
            }

            else if (dependents == 5){
                    f.format(payRate * hoursWorked - (payRate *                                                 hoursWorked*0.175) );
            }

            else if (dependents >= 6){
                    f.format(payRate * hoursWorked - (payRate *                                                 hoursWorked*0.2025) );
            }


            System.out.println("New gross Pay: " + f.format(payRate * hoursWorked - (payRate *                                      hoursWorked*0.04)));




    }
}
4

1 回答 1

7

在 Java - 和许多其他语言中 - 做

result = operand1 operator operand2

立即计算结果。Java 不会将结果中的程序行保存在内存中,该结果会在hoursWorkedpayRate被修改后立即更新GrossPay ,而只会保存双重结果。

所以当你

    double hoursWorked =0.00;
    double payRate =0.00;
    double grossPay= (payRate * hoursWorked);

GrossPay采用0 * 0(即零)的结果。

你只需要移动一点GrossPay计算

        System.out.print("Enter pay rate: ");
        payRate = keyboard.nextInt();

        System.out.print("Enter hours worked: ");
        hoursWorked = keyboard.nextInt();

        System.out.print("Enter amount of dependents: ");
        dependents = keyboard.nextInt();

        double grossPay= (payRate * hoursWorked);

让它发挥作用。

于 2013-02-04T03:19:28.637 回答