为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中获取“线程“main”java.lang.StringIndexOutOf

在 Java 中获取“线程“main”java.lang.StringIndexOutOf

智慧大石 2021-12-10 17:05:44
输出应该是用自己的行向后打印的数组的每个单词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)
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

我稍微清理了你的代码。不要依赖不会提高代码可读性的临时变量。尝试使用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();

}

这是基于您的原始代码。就个人而言,我更喜欢使用StringBuilder它的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);


查看完整回答
反对 回复 2021-12-10
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

for ( int i = length - 1 ; i >= 0 ; i-- )

length您在上面使用的值是list数组的长度,而不是单词。


记住在每个循环后清空反向词:


        System.out.println(reverse);

        reverse = "";

如果你不冲洗,你会得到:


yrev

yrevgnirae

yrevgniraegnikceh

yrevgniraegnikcehdoo

yrevgniraegnikcehdoodnat

yrevgniraegnikcehdoodnateula

代替:


yrev

gnirae

gnikceh

doo

dnat

eula


查看完整回答
反对 回复 2021-12-10
?
三国纷争

TA贡献1804条经验 获得超7个赞

验证提供的参数在 Main.java:13 中是否有效。检查提供的偏移量是否指向有效索引,并且 count 参数未指向大于字符串本身大小的索引。


一个替代:


public  String[]  reverseString(String[] words)

{

    String[] reverse=new String[words.length];


    for(int i=0;i<words.length;i++)

    {   

        //added for setting element as emptyString instead of null

        reverse[i] = "";

        for(int j=words[i].length()-1;j>=0;j--)

        {

            reverse[i]+=words[i].substring(j,j+1);

        }

    }

    System.out.println(Arrays.toString(reverse));

    return reverse;


}


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信