-2

メソッドの入力が実行された同じメソッドの出力になるように、文字列を変更するメソッドを繰り返そうとしています。これがループされます。

コードの抜粋は次のとおりです。

public void start() {
    String inputString = "                                          ";
    boolean gameOver = false;

    while (!gameOver) {
        int column = columnResult();

        String tokens = enterToken("X", inputString,column);   
        System.out.println(tokens);

        enterToken("X", tokens, column);
        System.out.println(tokens);
    }
}

private int columnResult() {
    System.out.println("Enter column for X:");
    String keyInput = Keyboard.readInput();
    int column1 = Integer.parseInt(keyInput);
    return column1;
}

private String enterToken(String tokenSymbol, String inputString, int column){
    String columnEdit = inputString.substring(column*6-6,column*6); 

    String columnEdit1 = columnEdit.trim();
    String columnEdit2 = columnEdit1+tokenSymbol+"                 ";
    String columnEdit3 = columnEdit2.substring(0,6);
    String start = inputString.substring(0,column*6-6);
    String end = inputString.substring(column*6);

    System.out.println(start);
    return start+tokenSymbol+end;
}

だから私は次の enterToken メソッドに前のものから返された値を与えようとしています。どうすればこれを達成できますか?

4

1 に答える 1

0

問題がわかりました...

String 変数はループ内でのみスコープを持つため、ループが繰り返されると、それは新しい変数になります。ループの外側でString 変数を定義して、そのスコープがループの反復間で持続するようにします。

String tokens = inputString; // initialize the input
while (!gameOver) {
    int column = columnResult();
    // the result will be feed back in next iteration
    tokens = enterToken("X", tokens, column);   
    System.out.println(tokens);
}
于 2012-08-22T00:57:45.667 に答える