0

「4 を掛けるとその逆数になる 5 桁の数は?」を理解しようとしています。このコードを使用していますが、エラーが発生します:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 5 at java.lang.String.charAt(String.java:658) at     
Digits.main(Digits.java:15)

なぜこれが起こっているのかを理解したい(誰かに説明してもらいたい)。StringBuilder (StringBuilder.reverse())コードに charAt を保持し、可能であれば使用したくありません。

public class Digits{
  public static void main(String[] args) {
    int n = 0;
    int b = 0;
    String number = "";
    String backwards = "";

    for (int x = 9999; x <= 99999 ; x++ ) {
      n = x;
      b = x * 4;
      number = Integer.toString(n);
      backwards = Integer.toString(b);

      if ( number.charAt(0) == backwards.charAt(4) && number.charAt(1) == backwards.charAt(3)
      && number.charAt(2) == backwards.charAt(2) && number.charAt(3) == backwards.charAt(1)
      && number.charAt(4) == backwards.charAt(0)) {
        System.out.println(n);
        break;
      }
    }

ありがとう

4

2 に答える 2

1

コードは例外なく実行されます。テストされたコードは以下のとおりです。

public class Digits {

    public static void main(String[] args) {
        int n;
        n = 0;
        int b;
        b = 0;
        String number;
        number = "";


    String backwards;
        backwards = "";

        for (int x = 9999; x <= 99999; x++) {
            n = x;
            b = x * 4;
            number = Integer.toString(n);
            backwards = Integer.toString(b);

            if (number.charAt(0) == backwards.charAt(4) && number.charAt(1) == backwards.charAt(3)
                    && number.charAt(2) == backwards.charAt(2) && number.charAt(3) == backwards.charAt(1)
                    && number.charAt(4) == backwards.charAt(0)) {
                System.out.println(n);
                break;
            }
        }
    }
}

このコードの出力は 21978 です

于 2015-07-13T07:19:40.717 に答える
0

このコードでは、この例外は発生しません。chatAt(5) がありません。もう一度確認してください。

于 2015-07-13T06:02:12.283 に答える