【问题标题】:StringIndexOutOfBoundsException in a FOR Loop [closed]FOR循环中的StringIndexOutOfBoundsException [关闭]
【发布时间】:2013-05-17 20:08:02
【问题描述】:
import java.util.Scanner;

public class Test {

public static void main (String [] args){

    String word = "ErFLwWSa$ F?ytWtmVRLWmDj #4STs!@  VRa!12OW";
    String word2 = "GREEN";
    String result ="";
    for(int i = 0; i<=word2.length()-1; ++i){
        result += word.replace(word.charAt(i),word2.charAt(i+1));
    }
}
}

基本上是我想要完成的。

假设我有任何字符串word 我想知道我可以将word2 中的字母放入word 中多少次,空格、数字和符号不计算在内。

基本上输出应该是这样的。

ErFLwWSa$ F?ytWtmVRLWmDj #4STs!@ VRa!12OW

GREENGRE E NGREENGREENG REE NGR EE

【问题讨论】:

    标签: java if-statement for-loop replace character


    【解决方案1】:

    假设你有一个长度为 10 的字符串。

    for(int i=0; i&lt;a.length();i++) 从 0 运行到 9(总共 10 个) - 请记住,Java 数组是从 0 开始的。

    a.length() 将是 10,i 将从 0 运行到 9(9 是小于 10 的最大整数,在下一次迭代中将不满足 for 条件)。

    当你这样做时:if(a.charAt(i)==a.charAt(i+1)) 你试图到达位置 10 的元素,因此你得到了异常。

    【讨论】:

    • 我将其改写为“位置 10 的元素”。
    • 确实,好多了:)
    • 所以基本上要阅读不存在的第 11 个字符?现在将如何反击?如果我处于循环的最后一个循环,请添加 if 语句?
    • 如果你的数组长度为 10,那么它的索引从 0 到 9(所以 10 超出范围)。是的,您提出的解决方案很好。
    • @hayonj:我不会检查每次迭代,而是调整循环条件...i &lt; a.length() - 1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多