Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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—将方法更改为for/while循环_Java_For Loop_While Loop - Fatal编程技术网

Java—将方法更改为for/while循环

Java—将方法更改为for/while循环,java,for-loop,while-loop,Java,For Loop,While Loop,我想将第一个方法更改为while和for循环。我在下面添加了代码。这是正确的吗 public String extractWordFour(String text){ if(text.length()==0 || text.charAt(0) == ''){ return ""; } else { return text.charAt(0) + extractWordFour(text.substring(1));

我想将第一个方法更改为while和for循环。我在下面添加了代码。这是正确的吗

public String extractWordFour(String text){
        if(text.length()==0 || text.charAt(0) == ''){
            return "";
        } else {
            return text.charAt(0) + extractWordFour(text.substring(1));
        }
    }

public String extractWordFour(String text){
    int i=0;
    while (i<=text.length){
        return text.charAt(0) + extractWordFour(text.substring(i));
        i++;
    }
}

public String extractWordFour(String text){
    for(int i=0;i<=text.length();i++){
        return text.charAt(0) + text.substring(1);
    }
}
publicsstringextractWordFour(字符串文本){
如果(text.length()==0 | | text.charAt(0)=''){
返回“”;
}否则{
返回text.charAt(0)+extractWordFour(text.substring(1));
}
}
公共字符串提取器WordFour(字符串文本){
int i=0;

虽然(i我不打算回答这个问题,因为我认为这是一个h.w.赋值,但我把它放在一个答案中,因为我不能把它放在一个注释中,但我假设您想将递归解决方案转换为while或for循环解决方案

您的while解决方案首先是错误的,因为您将递归和while混合在一起。您不应该在while循环中调用函数

public String extractWordFour(String text){
    int i=0;
    while (i<=text.length){
        return text.charAt(0) + extractWordFour(text.substring(i));
        i++;
    }
}
publicsstringextractWordFour(字符串文本){
int i=0;

而(i作为开始,您不能让
字符串.charAt(0)='
,因为
'
不是有效的字符,而
'
是有效的空字符串

第二个方法不起作用,因为它应该是
text.length()
而不是
text.length
,这是在数组上调用它时的方法,并且
i++
由于递归而无法访问。如果失败,方法签名将声明它返回字符串,但没有返回语句

您的第三个方法确实有一个return语句,但它仍然不起作用,因为它只在第一次迭代时返回,因此只给您前2个字符(事实上,您的编译器甚至不允许它,因为它没有意识到这一点)


除了所有这些问题之外,如果
extractWordFour
的方法名准确地表示了它们应该做什么,那么它们中没有一个会这样做,因为逻辑没有意义。我建议您从思考这个问题开始:如何通过检查字符串来判断一个单词的结尾,以及您的程序需要知道什么来删除每个单词第四个单词前面的东西和后面的东西?

第一个代码无法编译。还是需要添加
|text.charAt(0)==''
在while循环测试中?对我来说,它看起来很奇怪。这个方法的目的是什么?这是一个模拟试卷上的问题。我直接从试卷上复制了代码。我认为你需要理解for/while loopsnsc010,你目前有3个方法都具有相同的方法签名,
公共字符串extractWord四个(字符串文本)
。如果它们在同一个类中,这将无法编译。你打算对这些方法做什么?它们打算在不同的类中吗?是的,这是有意义的,我将给它另一个GOT。第三个方法将实际返回整个文本-第一个字符后接第一个字符后的所有内容。
public String extractWordFour(String text){
    for(int i=0;i<=text.length();i++){
        return text.charAt(0) + text.substring(1);
    }
}