2013-02-04 36 views
-2

我試圖將payRate * hoursWorked替換爲單個變量grossPay,但是當我這樣做時,它會爲任何計算返回值0.0。 double grossPay被故意註釋掉,所以你可以看到我想要做的事情。Java將兩個雙打乘以另一個雙倍

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




    } 
} 
+3

如果你相乘,結果爲0,其中一個因子是0,因爲實數中沒有零除數。 –

+1

我不確定是什麼問題。兩個乘法操作數在註釋掉的乘法點處都是零,所以當然它會得到零結果。我認爲可能是時候[sscce](http://sscce.org/) –

+0

您是否已經調試過您的程序?如果沒有,請執行並找到您的問題。 –

回答

5

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

,使其工作。

+0

ohh我現在明白了。非常感謝先生 – montenegroxnj

+2

@montenegroxnj:我認爲你應該接受這個答案。另外,從更改日誌看來,您更改了原始代碼以反映發佈的ring0;我想你應該保留原來的(錯誤的)代碼。 – damix911