Java删除字符串问题(请不要使用StringBuilder或BufferedWriter给出任何解决方案)

标签 java string loops

任务:在此问题中,您从原始字符串中删除所有出现的删除字符串。每次取出删除字符串时,您还必须删除删除字符串前面的字母。删除字符串及其前导字符后,必须检查是否存在更多出现的删除字符串。

问题:我不明白为什么我不断收到此异常以及如何修复它。 我对该组织的输入是 fuxqwexqwertyxqwexqwertyrtyxqwertyrtyn。我的删除输入是qwerty。 我的预期输出应该很有趣。

线程“main”中出现异常 java.lang.StringIndexOutOfBoundsException:开始 1,结束 7,长度 3 在 java.base/java.lang.String.checkBoundsBeginEnd(String.java:3410) 在 java.base/java.lang.String.substring(String.java:1883) 在Exercise8.remove(Exercise8.java:17) 在Exercise8.main(Exercise8.java:10)

import java.util.*;

public class Exercise8 {

    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);
         System.out.println("Sample input: ");
         String org = scan.nextLine();
         String removal = scan.nextLine();
         remove(org, removal);
    }

    private static void remove(String org, String removal) {
        for (int x = 0; x < org.length()-1; x++)
        {
            if (org.substring(x,x + removal.length()).equals(removal))
            {
                org = org.substring(0,x-1) + org.substring(x + removal.length(), org.length());
                x = 0;

            }
        }

        System.out.println(org);
    }
}

最佳答案

    for (int x = 0; x < org.length()-removal.length(); x++)
    {
        if (org.substring(x,x + removal.length()).equals(removal))
        {
            org = org.substring(0,x-1) + org.substring(x + removal.length(), org.length());
            x = 0;

        }
    }

您需要注意不要在无效索引处开始子字符串。

关于Java删除字符串问题(请不要使用StringBuilder或BufferedWriter给出任何解决方案),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60834916/

相关文章:

Java 给数字添加前导零

C# String.Format 和 SpriteBatch.DrawString 间距问题

linux - 带有 sed 文本文件的 For 循环

python,向量之间的角度: need for computational efficiency

java - 将具有相同元素和属性名称的 XML 映射到 Java 对象

java - removeChild() 方法正在中断 for 循环

java - 如何将两个整数的数字相加?

java - JAVA中生成无私钥的CMSSignedData

Java:将条目长度变化很大的二维数组作为格式化字符串返回

vba - 使用 Excel VBA 循环浏览文件夹中的 .csv 文件并将文件名复制到最后一列的单元格中