Java将两个双倍乘以另一个双倍

mon*_*xnj -2 java double

我正在尝试替换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)));




    }
}
Run Code Online (Sandbox Code Playgroud)

Rin*_*g Ø 7

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

result = operand1 operator operand2
Run Code Online (Sandbox Code Playgroud)

立即计算结果.Java没有在内存中保存的程序行的结果,将更新grossPay尽快hoursWorkedpayRate被修改,但只有双重结果.

所以,当你

    double hoursWorked =0.00;
    double payRate =0.00;
    double grossPay= (payRate * hoursWorked);
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

让它工作.

  • @montenegroxnj:我想你应该接受这个答案.另外,从更改日志中可以看出,您修改了原始代码以反映ring0发布的内容; 我认为你应该保持原始(错误)代码不变. (2认同)