2

私は for ループを使用しており、ループを通過するたびに文字列を返す必要がありますが、「return」を使用するとループが中断され、Eclipse は「Unreachable Code」エラーをスローします。助言がありますか

4

5 に答える 5

2

あなたの論理は壊れていると思います

for (int counter = 0; counter < possibleAnswers.length; counter++){
    // This condition will be meet immediately because 0 is less then 25...
    if (counter < 25){
        return alpha[counter] + ": " + possibleAnswers[counter] + "\n";
    }
    // Meaning it is impossible for the program to ever reach this line...
    if (counter >= 26){
        return alpha[26] + a + ": " + possibleAnswers[counter] + "\n";
        a++;
    }
}

私はあなたが何かを試した方が良いかもしれないと思う...

StringBuilder sb = new StringBuilder(25);
for (int counter = 0; counter < possibleAnswers.length; counter++){
    if (counter < 25){
        sb.append(alpha[counter] + ": " + possibleAnswers[counter] + "\n");
    }
    if (counter >= 26){
        sb.append(alpha[26] + a + ": " + possibleAnswers[counter] + "\n");
        a++;
    }
}
return sb.toString();

更新作業例

String possibleAnswers[] = new String[30];
String alpha[] = new String[30];

for (int index = 0; index < 30; index++) {
    possibleAnswers[index] = "Happy " + index;
    alpha[index] = Integer.toString(index);
}

int a = 0;

StringBuilder sb = new StringBuilder(25);
for (int counter = 0; counter < possibleAnswers.length; counter++) {
    if (counter < 25) {
        sb.append(alpha[counter]).append(": ").append(possibleAnswers[counter]).append("\n");
    }
    if (counter >= 26) {
        sb.append(alpha[26]).append(a).append(": ").append(possibleAnswers[counter]).append("\n");
        a++;
    }
}

System.out.println(sb);

どの出力

0: Happy 0
1: Happy 1
2: Happy 2
3: Happy 3
4: Happy 4
5: Happy 5
6: Happy 6
7: Happy 7
8: Happy 8
9: Happy 9
10: Happy 10
11: Happy 11
12: Happy 12
13: Happy 13
14: Happy 14
15: Happy 15
16: Happy 16
17: Happy 17
18: Happy 18
19: Happy 19
20: Happy 20
21: Happy 21
22: Happy 22
23: Happy 23
24: Happy 24
260: Happy 26
261: Happy 27
262: Happy 28
263: Happy 29
于 2012-09-28T03:51:45.443 に答える
2

, を返すことArrayList<String>がアプリケーションに適していない場合、これはコールバック関数の仕事のように思えます。コールバック インターフェイスを定義します。

public interface StringDelivery {
    public void processString(String aString);
}

次に、ループでコールバックできます:

public void loopThroughStrings(StringDelivery callback) {
    for (. . .) {
        String nextString = . . .
        callback.processString(nextString);
    }
}

その後、インターフェイスを実装する任意のオブジェクトでこれを呼び出すことができます。

編集:

一連の文字列を計算しているが、それらを単一の文字列として返す必要がある場合は、それらを配列に入れてから、配列Arrays.toString(Object[] array)全体を単一の文字列に変換するために使用できます。

int n = <number of strings>
String[] strings = new String[n];
for (int i = 0; i < n; ++i) {
    strings[i] = <i-th string>
}
return Arrays.toString(strings);

戻り値は、", " で区切られ、角括弧 "[]" で囲まれたリスト要素でフォーマットされます。

于 2012-09-28T03:40:19.920 に答える
0

すべての文字列を格納するには、ArrayList を使用する必要があります。

for ループが完了したら、ArrayList を返します。何かのようなもの。

String returnString = "";

for loop ....{
   returnString = returnString + " " + someNewString;
 }


return returnString
于 2012-09-28T03:38:12.740 に答える
0

問題を複雑にする理由..文字列の配列を返すだけです

 public String[] function1()
 {
    String[] str1 new String(10);

    for(int i=0;i<10;i++)
    { 
          str1[i] ="string"+i;
    }
    return str1;
 }
于 2012-09-28T03:38:27.267 に答える
0

メソッドから文字列の配列を返すことを検討する必要があります。

for ループを修正するだけでは、何も返されません。値を返す関数です。

最後に、何を達成しようとしているのかが明確でないため、コメントするのは困難です。

于 2012-09-28T03:38:41.973 に答える