0

在尝试创建所有 java 函数时,我编写了自己的 deleteSubString 方法。但是我对它产生的输出有疑问。这是我的代码:

        //deleteSubString
    String subString = "ON";
    String delString = "PONY";
    String emp = "";
    int delIndex = 0;
    for(int i=0; i<delString.length()-1; i++){
        if(delString.contains(subString)){
            //do nothing
            //read the rest of the string to confirm it contains
            for(int j=delIndex; j<delString.length()-1; j++){
                if(delString.contains(subString)){
                    //do nothing
                }
                else{
                    emp += delString.charAt(j);
                }
            }
        }
        System.out.println("Delete SubString");
        System.out.println(emp);
    }

我期望发生的是将字符串打印为“PY”,但它选择根本不打印任何内容。任何想法将不胜感激!

4

5 回答 5

1

if(delString.contains(subString)){始终为真,因此emp永远不会设置为新的String.

于 2013-09-22T10:36:42.680 回答
1

PONY 包含 ON 并且delString.length()-1不会考虑最后一个字符,因此您的 else 部分不会运行。

而是简单地做

if(delString.contains(subString))
{
    int delSize=subString.length();
    int index1=delString.indexOf(subString);
    int index2=index1+delSize;
    return delString.substring(0,index1)+""+delString.substring(index2+1);
}
else return delString;
于 2013-09-22T10:40:27.357 回答
0

你有:

(delString.contains(subString))

对于您提供的字符串,此语句将始终为真。

于 2013-09-22T10:36:57.617 回答
0
for(String s : delString.split(subString)) {
    emp += s;
}

这是你想要的吗?

于 2013-09-22T12:09:28.337 回答
0
        String subString = "ONY";
    String delString = "PONY";
    String emp = "";
    StringBuilder sb1=new StringBuilder(subString);
    StringBuilder sb2=new StringBuilder(delString);
    for(int i=0;i<sb2.length();i++)
    {
        for(int j=0;j<sb1.length();j++)
        {
        if(sb2.charAt(i)==sb1.charAt(j))
        {
            sb2.deleteCharAt(i);
        }

        }

    }
    emp=sb2.toString();
    System.out.println(emp);

抱歉!!我已经修改了代码,但看起来它可以正常工作......字符串类的问题是它的不变性......你写的 cod 没有给出要求的输出......如果它给出了它可以删除只有第一个字符,即在你的情况下只有 O Y 没有被删除,所以我转换为 StringBuffer 类并写了..快乐编码!

于 2013-09-22T13:22:37.070 回答