-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 は、 hoursWorkedまたはpayRateが変更されるとすぐにGrossPayを更新する結果のプログラム行をメモリに保持しませんが、 2 倍の結果のみを保持します。

だからあなたが

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

グロスペイ0 * 0は(つまりゼロ)の結果を取ります。

グロスペイの計算を少し動かすだけです

        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 に答える