0

あなたの日曜日がうまくいくことを願っています。したがって、この小さなプログラムでの私の目標は、インデックスが [0,1] [4,5]...[12,13] の新しい文字列を出力することです... ループは、4 文字を超える偶数番号の単語でのみ機能します。 . どうしてこれなの?この野郎を磨く方法についてのアドバイスは大歓迎です。ありがとうございました。

import java.util.Scanner;

public class LoopPractice {
public static void main(String[] args) {

  Scanner myScanner = new Scanner(System.in);

  System.out.print("Enter a String please: ");
  String str = myScanner.next();

  int count = 0;
  int x = 0;
  int y = 1;
  String emptyStr = "";

     while ( count != str.length() ) {

        emptyStr += str.charAt(x) + "" +  str.charAt(y);
        x += 4;
        y += 4;
        count += emptyStr.length();
     }
  System.out.print(emptyStr);

}
}
4

4 に答える 4

0

問題はこの行です

count += emptyStr.length();

あなたemptyStrは毎回2文字ずつ長くなります。したがって、最初は に 2 を足しますcount。次回は 4 を追加し、次に 6 を追加します。したがってcount、0、2、6、12、20 などの値を取ります。

これらの値のいずれでもない場合str.length()、ループは終了しません。

于 2013-10-21T05:48:59.250 に答える
0

あなたの質問に 100% 確信があるわけではありませんが、問題はここにあるようです: x += 4; y += 4;. これらの 2 つの変数を毎回 4 ずつ増やしています (X の場合は 0、4、8、Y の場合は 1、5、9)。

この関数を使用している.charAt場合、X と Y の値が文字列の長さよりも大きいため、範囲外の問題を示すエラーが発生する可能性が高くなります。

このエラーが発生しないようにするには、X と Y のインクリメント方法を変更する必要があります。

于 2013-10-21T05:27:45.147 に答える
0

while 条件では、文字列インデックスがオーバーフローしていないかどうかを確認する必要があります。

import java.util.Scanner;

public class LoopPractice {
public static void main(String[] args) {

  Scanner myScanner = new Scanner(System.in);

  System.out.print("Enter a String please: ");
  String str = myScanner.next();

  int x = 0;
  int y = 1;
  String emptyStr = "";

     while ( y <= str.length() ) {

        emptyStr += str.charAt(x) + "" +  str.charAt(y);
        x += 4;
        y += 4;
     }
  System.out.print(emptyStr);

}
}
于 2013-10-21T05:32:21.670 に答える