1

何らかの理由で String[] チャンプがインスタンス化されておらず、配列を初期化
すべきではない 理由がわかりません。champs = new String[]{ "BLAH", "BLAH", "BLAH"};

  public static String[] getChamps() {

    String rolereturn = ChampSelect.getRoles();

    //Switch to Determine Champion Suggestions


    String[] champs; //String Declaration

    switch (rolereturn) {

        case "AD Carry": //AD Carry Selection Options
            champs = new String[]{ "Ashe", "Caityln", "Draven", "Ezreal", "Kog'Maw", "Sivir", "Twitch", "Varus", "Vayne" };
            break;

        case "AP Carry": //AP Carry Selection Options
            champs = new String[]{ "Diana", "Evelyn", "Kassadin", "Kennen" };
            break;

        case "Support": //Support Selection Options
            champs = new String[]{ "Janna", "Nunu", "Shen", "Soraka", "Taric", };
            break;

        case "AP Jungle": //AP Jungle Selection Options
            champs = new String[]{ "Diana", "Fiddlesticks" };
            break;

        case "AD Jungle": //AD Jungle Selection Options
            champs = new String[]{ "Kha'Zix", "Nocturne", "Rengar", "Udyr", "Warwick", };
            break;

        case "AP Top": //AP Top Selection Options
            champs = new String[]{ "Akali", "Cho'Gath", "Kennen", "Malphite", "Shen", "Singed", "Teemo" };
            break;

        case "AD Top": //AD Top Selection Options
            champs = new String[]{ "Fiora", "Irelia", "Jax", "Kha'Zix", "Master Yi", "Nasus", "Nidalee", "Rengar", "Zed" };
            break;
    }
    return champs;
}
4

3 に答える 3

4

正解です。caseステートメントの1つが呼び出された場合、配列が初期化されます。そこにを追加し、defaultそれdefaultが呼び出された場合はスローします。一致するcaseステートメントがない場合、デフォルトが呼び出されます。すべてのケースステートメントをカバーしているように見えるので、defaultスローすることをお勧めします。

このような何かがそれを行う必要があります

 default: throw new RuntimeException("SHould not be here " + rolereturn);
于 2012-11-28T09:55:32.360 に答える
1

スイッチケースではMapなく、

public static String[] getChamps() {

    Map<String,String[]> map = new HashMap();
    map.put("AD Carry",new String[]{ "Ashe", "Caityln", "Draven", "Ezreal", "Kog'Maw", "Sivir", "Twitch", "Varus", "Vayne" });
    // ... and so on for all your cases

    String rolereturn = ChampSelect.getRoles();
    if (!map.containsKey(rolereturn)) throw new IllegalArgumentException(rolereturn);

    return map.get()    
}
于 2012-11-28T10:22:35.593 に答える
0

最も可能性の高い原因は、rolereturnsあなたが考えているものではないという問題です。スイッチの最後にデフォルトを追加して、配列を何かに設定して、それが機能するかどうかを確認してください。

それ以外の場合は、単にデバッグして、正しい行に入っていることを確認してください...

于 2012-11-28T09:56:10.903 に答える