マレクŠevela:
私は、配列の長さは、テスト関数に与えられたときに文字列配列を埋めるための方法を探しています。試験は、長さ100を提供し、例えば、私はそれが最後まで印刷するように、これらの5つの文字列値は、ループ内の配列全体に印刷したいです。これまでのところ、私は最初の5で配列を埋めるために管理し、しかし、私はこれをループする方法を見つけることができず、高い配列の長さが与えられたとき、テストは失敗します。任意の助けをありがとう!
public class Sid {
public static String howMuchILoveYou(int nb_petals) {
String Petals[]=new String[7];
Petals[0]="zero index"; //cannot skip this for some reason
Petals[1]="I love you";
Petals[2]="a little";
Petals[3]="a lot";
Petals[4]="passionately";
Petals[5]="madly";
Petals[6]="not at all";
return Petals[nb_petals].toString();
}
}
テスト
import static org.junit.Assert.assertEquals;
import java.util.Random;
import org.junit.Test;
public class SampleTest {
@Test
public void test1() {
assertEquals("I love you", Sid.howMuchILoveYou(1));
assertEquals("a little", Sid.howMuchILoveYou(2));
assertEquals("not at all", Sid.howMuchILoveYou(6));
assertEquals("I love you", Sid.howMuchILoveYou(343)); //THIS ONE FAILS
}
}
バックドア :
そう私の理解によると、あなたは、ループ内の配列を実行しようとしている...ここに書いてコメントすることはできません。
assertEquals("I love you", Sid.howMuchILoveYou(343)); //This will go outOfIndexBound
あなたはサイズ7のあなたの配列を宣言しているので、この方法であなたのreturn文は、配列のインデックス値を返します。
return Petals[nb_petals].toString();
どちらかは、%演算子を使用してループ配列を持つことができます
return Petals[(nb_petals - 1) % 6 + 1];