2016-02-09 221 views
0

我一直在爲我的uni課程編寫一個程序,而且我很難理解可能很荒謬的東西。Java計算錯誤

這裏有點我的代碼

// International Calls Selection 

      System.out.println("Would you like to include international calls?"); 
      System.out.println("1. Include"); 
      System.out.println("2. Do not Include"); 
      int intCallChoice = keyboard.nextInt(); 
      boolean intChoice = true; 

      if (intCallChoice == 2) 
      { 
       intChoice = false; 
      } 

這部分從用戶接受輸入,你可以看到,然後在我的合同類我有一個是這樣的一個價格計算器方法:

if (intChoice = true) 
    { 
     priceOfContract *= 1.15; 
    } 

但是,無論我選擇包含國際長途還是不包含國際長途,結果總是會增加15%?

+0

在代碼'if(intChoice = true)'你將值賦給'intChoice'而不是比較它。爲了比較,用'if(intChoice == true)'替換代碼或者簡單地將'if(intChoice)'替換爲布爾變量 –

回答

0
if (intChoice = true) 

因爲你使用賦值(單=)和不等於(雙==)將永遠是真正的

你的條件應該是

if (intChoice == true) 

或者乾脆

if (intChoice) // for boolean check 
0

嘗試使用==而不是=像這樣:

if (intChoice == true){ 

它用於分配=,但==它是用來檢查平等。 或者用剛:

if (intChoice){ 
0

正如其他人所說,你需要使用==來比較值,但是因爲你的變量是一個布爾值,你可以if語句,甚至進一步縮短這個:

if (intChoice) { 
    priceOfContract *= 1.15; 
} 
0
if (intChoice = true) 

是一個條件,並且當您想要將intChoice變量值與true進行比較時,必須使用兩個等號(==),方法與以前相同:

if (intCallChoice == 2) 
if (intCallChoice == 2) 

如果你使用正在改變intChoice變量的值設置爲true,只有一個等號的條件將八方通

if(true) 

這意味着對於任何類型的呼叫priceOfContract將由1.15相乘的。