Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么indexOf不用于计算字符串是_Java - Fatal编程技术网

Java 为什么indexOf不用于计算字符串是

Java 为什么indexOf不用于计算字符串是,java,Java,我很确定indexOf会打印出字母所在的号码!在我的代码中,若有,应该添加到结果中,以查看消息中有多少个x!虽然它不工作,但它打印出7,这意味着它完全忽略了我的if语句 public class Test1 { public static void main(String[] args) { String message = "xyxxzax"; int result = 0; int y = message.l

我很确定indexOf会打印出字母所在的号码!在我的代码中,若有,应该添加到结果中,以查看消息中有多少个x!虽然它不工作,但它打印出7,这意味着它完全忽略了我的if语句

public class Test1
{
    public static void main(String[] args)
    {
        String message = "xyxxzax";
        int result = 0;
        int y = message.length();
        for(int x = 0 ; y > x; x++){
            String v = message.substring(x,x+1);
            if (message.indexOf("x") > -1){
                result++;
            }
        }
        System.out.println(result);
    }
}

这是因为您从未更改字符串消息!我想你知道indexOf不是这样工作的。因此:

public class Test1
{
    public static void main(String[] args)
    {
        String message = "xyxxzax";
        int result = 0;
        int y = message.length();
        for(int x = 0 ; y > x; x++){
            String v = message.substring(x,x+1);
            if (v.equals("x")){
                result++;
            }
        }
        System.out.println(result);
    }
}


发生这种情况是因为您在消息中而不是在子字符串VMMessage中查找x。indexOfx>-1对于消息字符串xyxxzax始终为真。也许你想写v.indexOfx>-1@ThomasKläger如果找到x,如何删除它?那么indexOf如何工作?@CedrikPICARD IndexOfRef将在字符串中查找第一个元素,但您从未更改字符串,它也永远不会删除为您找到的字符串。因此,在您的if语句中,message.indexOfx>-1始终返回true。