2013-02-06 12 views
-2

我用這個代碼簡單的if/else語句,如果x大於y,將總結答案和如果x不大於y,將會減去它!出於某種原因,我得到一個運行時錯誤。我試圖做一個簡單的if/else語句,但由於某種原因,我得到一個運行時錯誤

任何人都可以幫助我嗎? 的代碼是:

import java.util.Scanner; 

public class calculation 
{ 
    public static void main(String[] args) 
    {  
     int x,y,answer; 

     Scanner kb = new Scanner(System.in); 
     System.out.println(" Enter x & Y "); 

     x = kb.nextInt(); 
     y = kb.nextInt(); 

     if (x > y) {  
      answer = (x + y); 
     } 
     else if (x < y) { 
      answer=(x-y); 
     } 

    } 
} 

這是我得到的消息:警告:局部變量答案是從來不看

+2

請修改您的問題以發佈「運行時錯誤」消息和堆棧跟蹤。 –

+1

「_...並且如果它是其他東西,將會減去它。」如果你想這是真的,你應該使用「_else_」而不是「_else if_」。如果x和y相等,您當前的代碼將不會執行任何操作。 – jahroy

+1

請看我更新的答案。它有幫助嗎? – andrewdotn

回答

2

如果你得到的錯誤是這樣的:

Foo.java:23: error: variable answer might not have been initialized 
     System.out.print("answer is " + Integer.toString(answer)); 

然後問題是answer可能沒有設置任何值,並且計算機放棄並打印錯誤消息而不是可能返回垃圾。

answer如何不能設置值?您將answer設置爲x+y如果是x>y,並且您設置了x<yanswer=x-y;但如果x=y?沒有什麼能告訴計算機在這種情況下應該做什麼。即使x對於您輸入到程序中的特定輸入可能不等於y,但Java現在會給您一條錯誤消息,希望您現在寧可在出現錯誤時立即修復它,而不是在稍後的某個時間某人首先輸入相等的值xy

你可以通過改變x>yx>=y,或x<yx<=y,或通過增加第三x==y情況下解決這個問題。


如果你所得到的警告是

Warning: The local variable answer is never read 

然後,你需要補充的是通過在方法的末尾添加這種以某種方式使用answer,例如聲明:

System.out.print("answer is " + Integer.toString(answer)); 

但是,請注意,這只是一個警告,而不是錯誤,所以前夕ñ雖然消息彈出,它應該運行得很好 - 試試吧!當然,您將無法看到answer獲得的值,因爲如警告所述,answer從未在當前代碼中讀取。

+0

...或僅使用** else **塊。請注意,該問題指出,如果x是** NOT **大於y,則應將「answer」設置爲「x - y」。 – jahroy

+0

我試過用別人而不是其他,如果但我不認爲它是因爲我有另一個if語句 我想答案是x-y for x y。我不想給任何價值x = y – Ryan

+0

@Ryan - 如果你有其他條件,你應該在你的問題中包括它。如果您沒有向我們顯示您的實際代碼,我們無法幫助您。另外,編譯器要求你爲一個變量賦值......就像,它是如何工作的。 – jahroy

0
int x,y, answer; 

Scanner kb = new Scanner(System.in); 

    System.out.println(" Enter x & Y "); 

    x= kb.nextInt(); 
    y= kb.nextInt(); 

    if (x>y) 
    answer= (x+y); 
    else 
    answer=(x-y); 
System.out.println("the answer is " + answer); 

因爲您使用掃描儀,因此您應該導入java.util.Scanner;

+0

我導入掃描儀,但我沒有寫在這裏。 我想要另一個條件。如果x Ryan

相關問題