Java charAt()字符串索引超出范围:5 [英] Java charAt() String index out of range: 5

查看:1414
本文介绍了Java charAt()字符串索引超出范围:5的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找出当乘以4时,5位数字给你的反转?使用此代码,但我收到错误:线程main中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:5
at java.lang.String.charAt(String.java:658)
在Digits.main(Digits.java:12)

I am trying to figure out "what 5-digit number when multiplied by 4 gives you its reverse?" using this code but I get error: 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:12)

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

for (int x = 9999; x < 100000 ; x++ ) {
  n = x;
  b = x *4;

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

任何帮助都会非常感激

推荐答案

正确。因为前五个字符位于索引 0,1,2,3 4 。我会使用 StringBuilder (因为 StringBuilder.reverse() )。而且,我建议你限制变量可见性。然后记得在更改 n 时修改数字向后和/或 b 。类似

Correct. Because the first five characters are at indices 0, 1, 2, 3 and 4. I would use a StringBuilder (because of StringBuilder.reverse()). And, I would suggest you restrict variable visibility. Then remember to modify number and backwards when you change n and/or b. Something like

for (int x = 9999; x < 100000; x++) {
    int n = x;
    int b = x * 4;
    String number = Integer.toString(n);
    String backwards = Integer.toString(b);
    StringBuilder sb = new StringBuilder(number);
    sb.reverse();
    if (sb.toString().equals(backwards)) {
        System.out.printf("%s * 4 = %s", number, backwards);
    }
}

我得到

21978 * 4 = 87912

这篇关于Java charAt()字符串索引超出范围:5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆