首页 > 解决方案 > 在Java中获取“线程“主”java.lang.StringIndexOutOfBoundsException中的异常”

问题描述

输出应该是用自己的行向后打印的数组的每个单词

public class Main
{
    public static void main(String[] args)
    {
         String [] list = {"every", "nearing", "checking", "food", "stand", "value"};
         String reverse = "";
         int length = list.length;
         for(int j=0; j<list.length; j++)
         {
            String word = list[j];
            for ( int i = length - 1 ; i >= 0 ; i-- )
            {
                reverse = reverse + word.charAt(i);
            }
            System.out.println(reverse);
         }

    }
}

但我不断收到这条消息

   Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String 
    index out of range: 5
    at java.lang.String.charAt(String.java:658)
    enter code here`at Main.main(Main.java:13)

标签: java

解决方案


我稍微清理了你的代码。不要依赖不会提高代码可读性的临时变量。尝试使用for-each循环(它们提高了可读性)。应用这两点,给了我们

String[] list = { "every", "nearing", "checking", "food", "stand", "value" };
for (String word : list) {
    for (int i = word.length() - 1; i >= 0; i--) {
        System.out.print(word.charAt(i));
    }
    System.out.println();
}

这是基于您的原始代码。就个人而言,我更喜欢使用StringBuilderand its'reverse()方法。喜欢,

for (String word : list) {
    System.out.println(new StringBuilder(word).reverse());
}

在 Java 8+ 中,map类似

Arrays.stream(list).map(s -> new StringBuilder(s).reverse())
        .forEachOrdered(System.out::println);

推荐阅读