Java将两个双精度数乘以另一个双精度数

问题描述 投票:-2回答: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)));




    }
}
java double
2个回答
7
投票

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

result = operand1 operator operand2

立即计算结果]。 Java不会将result中的程序行保留在内存中,一旦修改了[[hoursWorked或payRate,该行将立即更新grossPay,而仅产生double结果。所以当你

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);

使其正常工作。

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.