2017-11-25 10 views
1

現在、ゲームでは、すべてのキーを収集し、すべての上司などを殺したかのような特定の質問をします しかし、それは終了に閉じて取得し、どのキーを使用したいですか? "それは素晴らしいが、それはドアのセクションを得れば、それは実際にキーの値を取得していないこと、それだけでコードテキストベースのゲームを作成すると私はつまらない

public static int possibleKey() 
{    
    SetnGet sng = new SetnGet(); 
    int keys; 
    do 
    { 
     System.out.println("Which key would you like to use?"); 
     keys = in.nextInt(); 
     } 
    while(keys != 1 && keys != 2 && keys != 3); 

    return keys; 
} 

public static int possibleLevel() 
{ 
    SetnGet sng = new SetnGet(); 
    System.out.println("Which door would you like to enter? - 1, 2, 3 or 4"); 
    int level; 

    if(sng.accessibleKey() == 3) 
    { 
     do 
     { 
      System.out.println("You have all three keys, you have complete access"); 
      level = in.nextInt(); 
     } 
     while(level != 1 && level != 2 && level != 3); 
    } 
    else 
    { 
     do 
     { 
      System.out.println("You have no level access"); 
      level = in.nextInt(); 
     } 
     while(level != 1 && level != 2 && level != 3 && level != 4); 

    } 
    return level; 
} 

セットから取得の0

主な作品を出力しませんSetnGetクラス

private int possibleKey; 
private int possibleLevel; 

public int setPossibleKey() 
{ 
    return possibleKey; 
} 

public void setPossibleKey(int possibleKey) 
{ 
    this.possibleKey = possibleKey; 
} 

public int getPossibleLevel() 
{ 
    return possibleLevel; 
} 

public void setPossibleLevel(int possibleLevel) 
{ 
    this.possibleLevel = possibleLevel; 
} 
+0

IDEデバッガのコードをステップ実行しますか?あなたは何を見つけましたか? –

+0

私は毎回IDEデバッガを使い、毎回データの各ビットをテストすることが分かった。それはsng.accessibleKeyからSystem.out.println(「あなたはレベルアクセスがありません」)に行きます。 – Questionable

答えて

3

方法possibleLevel()SetnGetクラス(SetnGet sng = new SetnGet();)のインスタンスを作成し、右その後、インスタンス(sng.accessibleKey())のタイプintのフィールドを読み取ります。そのような読み込みの結果はもちろん、intのクラスフィールドのデフォルト値であり、あなたのフィールドに他の値を決して設定しないので、0です。その結果、常にelseに行き、「あなたにはレベルアクセスがありません」というメッセージが表示されます。

public class Main { 

    private static Scanner in = new Scanner(System.in); 

    private static SetnGet sng = new SetnGet(); 

    public static void main(String[] args) { 
     int selectedKey = possibleKey(); 
     sng.accessibleKey(selectedKey); 
     int level = possibleLevel(); 
    } 

    public static int possibleKey() { 
     // your initial implementation of the method 
    } 

    public static int possibleLevel() { 
     // your initial implementation of the method, but 
     // without the "SetnGet sng = new SetnGet();" line 
    } 
} 

:あなたは問題を解決するために何ができるか

は、このような何かをクラスにpossibleLevel()からSetnGet sng = new SetnGet();を移動してpossibleKey()呼び出しの結果が、それに設定されていることを確認することですSetnGetクラスには、次のようになります。

class SetnGet { 

    private int accessibleKey; 

    int accessibleKey() { 
     return accessibleKey; 
    } 

    void accessibleKey(int accessibleKey) { 
     this.accessibleKey = accessibleKey; 
    } 
} 

このあなたの最初の問題を解決します。メソッドの間でデータを渡したり、possibleKey()メソッドからの冗長なSetnGet sng = new SetnGet();行を取り除くなど、コードをさらにリファクタリングすることを検討することができます。

関連する問題