2013-06-30 43 views
-1

我是java語言的新手,並試圖運行一個簡單的基於文本的程序,一旦您按1或0,它將繼續故事或停止它。我無法弄清楚的是,如果我在下面運行這部分代碼,並選擇了錯誤的答案,它會繞過我的if語句。如何解決我的if/else語句Java

package game; 
import java.util.Scanner; 
class chase { 
public static void main (String args[]){ 

    int answer1; 
    answer1 = 1; 

    Scanner chase = new Scanner(System.in); 

    System.out.println("You hear a noise form a house you walk by. What do you  do?"); 
    System.out.println("Press 1 to enter the house. Press 0 to run away like a panzy"); 

    chase.nextLine(); 

    if (answer1 == 1){ 
     System.out.println("Good Choice!"); 
     }else{ 
     System.out.println("You ran away and was crushed by a falling pig"); 
     System.out.println("Try again!"); 
    } 

    } 

} 

我試圖做的是一旦你推1它說「不錯的選擇!」一旦你推0,它就運行else語句。但每次我推0就說「好選擇!」

我不知道我做錯了什麼。 請幫忙。

+0

nextLine()實際上做了什麼?我沒有看到實施。據我所知,沒有任何東西可以分配給答案1,那爲什麼它會改變呢? – xaxxon

+1

也.. *被*掉落的豬粉碎:) – aw04

+0

爲什麼不能???????? – CHASE

回答

6

的問題是在這裏:

chase.nextLine(); 

你應該讀一個數字answer1,而不是僅僅讀一本線,並把它扔掉:

answer1 = chase.nextInt(); 

這也將使它所以你不」 t需要answer1 = 1;線了。由於您只是忽略了您讀入的數據行,這意味着您永遠不會更改answer1的值,所以無論您鍵入什麼內容,始終都是1

2

它看起來並不像你曾經將輸入分配給answer1,並且由於它的初始值爲1,它始終爲真。

2

你這一行ANSWER1相等的值設置爲1:

answer1 = 1; 

,從來沒有改變它根據您的問題輸入。因此answer總是等於1並且您的else已經達到。

2

您正在使用'chase'變量,在這種情況下,'answer1'初始化不是必需的。

試試這個。

answer1 = chase.nextInt(); 

然後繼續處理您的if else語句,就像您在代碼中所做的那樣。

+0

我將它改爲answer1 = chase.nextInt();但它希望我創建一個方法。 – CHASE

+2

@CHASE寫回答1 = chase.nextInt();掃描儀追蹤後=新掃描儀(System.in); –