1

基本的に、値を返す際に一種の遅延が必要です。つまり、私のメソッド SlowThinker に文字列「Hello」、「Goodbye」、「See you later」が与えられた場合、「」(空の文字列)、「」を返す必要があります。こんにちは」、「さようなら」(など、常に現在の入力の 1 つ後ろ)。

これまでのところ、すべての入力を配列に保存しようとしましたが、実装で何が間違っているのかわかりません。

public class SlowThinker {
private String[] sayings = new String[20];
private int i = 0;
public int increment(){
    while(true){
        i++;
        return i;
    }
}
public String transform(String stringToTransform){
    sayings[0] = "";
    sayings[increment()] = stringToTransform;
    return sayings[increment()-1];
}

}

また、別のクラスでテスターとして以下を使用しています。

assertEquals("", this.slowThinkerOne.transform("Return This Later"));
    assertEquals("Return This Later", this.slowThinkerOne
            .transform("One More Time"));
    assertEquals("One More Time", this.slowThinkerOne.transform(""));
    assertEquals("", this.slowThinkerTwo.transform("This is the Last Time"));

本当にありがとう!

4

2 に答える 2

1

increment()メソッドで 2 回呼び出していますtransform()。値を一時変数に格納することで修正できます。

int val = increment();
sayings[val] = stringToTransform;
return sayings[val];
于 2013-03-12T04:37:20.767 に答える
0

関数型プログラミングのアンチテーゼ。戻り値は、引数のみに基づくのではなく、前の呼び出しの引数のみに基づいています。

public class SlowThinker {
    private String last = "";

    public String transform(String saying) {
        String response = last;
        last = saying;
        return response;
    }
}
于 2013-03-12T05:11:44.037 に答える