2015-01-06 120 views
-1

我試圖做一個簡單的故事冒險文本遊戲。我創建了一個名爲'key'的布爾值並將其設置爲false。在一個單獨的方法中,如果用戶鍵入1,則應該將鍵布爾值設置爲true,並將true值返回給start方法。但是,我不確定我會如何做到這一點。下面是這兩種方法的代碼:如何將布爾值返回給另一個方法?

啓動方式:

static void start() throws IOException { 
    boolean key = false; 
    Scanner in = new Scanner(System.in); 
    System.out.println("You are in a dark room with 3 doors."); 
    System.out.println("Pick 1. 2. or 3."); 



    int number; 

    number = in.nextInt(); 

    if(number == 1) { 

     room1(); 


     } 



    } 
} 

方法鍵的值更改爲true:

 static void room1() throws IOException { 
    Scanner in = new Scanner(System.in); 
    System.out.println("You have picked room 1."); 
    System.out.println("You find a dead man's corpse."); 
    System.out.println("Do you: 1. Loot the corpse or 2. Go back to the starting area"); 


    int number; 

    boolean key; 
    number=in.nextInt(); 
    if(number == 1) { 
     System.out.println("You find a key to another door, perhaps back at the starting area?"); 
     key = true; 
     start(); 
    } 

} 

任何幫助,不勝感激!

+0

哪裏是你單獨的方法? –

+0

我道歉,不知道你指的是什麼。 – goldenness

回答

0

start方法中聲明key的問題在於它超出了該方法之外的範圍。您不能通過其他方法訪問它,例如room1

要保持範圍內的變量key,必須將其聲明爲類變量,而不是任何方法,但是在類本身內部。它必須是static,以便您的static方法可以訪問它。

+0

任何時候我在類中寫入public static boolean key = false我只是得到一個無效的修飾符錯誤。 – goldenness

0

只是想更廣泛一點。在你的遊戲中,每個地下城至少有1個關鍵點,所以如果有一個私人的「密鑰」陣列並使用訪問器來測試你的角色是否擁有地下城密鑰,那麼這會更有意義。

希望有幫助。

0

由於人們已經回答了,將關鍵變量更改爲全球,這意味着聲明變量在類的開頭,然後在你的方法使用它。

例子:

public class Example { 
public static boolean key = false; 
} 

另外,我建議你使用的switch-case爲你將要做出的選擇:

int number; 

number = in.nextInt(); 

switch(number) { 
case 1: 
    room1(); 
    break; 
case 2: 
    room2(); 
    break; 
default: 
    break; 
    }