Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 我的代码怎么了_Java_Recursion - Fatal编程技术网

Java 我的代码怎么了

Java 我的代码怎么了,java,recursion,Java,Recursion,编写一个递归的布尔值方法containsVowel,该方法接受字符串,如果字符串包含元音,则返回true。 在以下情况下,字符串包含元音: 字符串的第一个字符是元音,或 字符串的其余部分(第一个字符之外)包含一个元音 这是给我的编程实验室的 以下是我向complier sas提供的信息,其中有一个错误,它不提供帮助。 请帮我纠正错误,谢谢 boolean containsVowel(String s) { if(s.containsVowel("aeiouAEIOU")) {

编写一个递归的布尔值方法containsVowel,该方法接受字符串,如果字符串包含元音,则返回true。 在以下情况下,字符串包含元音: 字符串的第一个字符是元音,或 字符串的其余部分(第一个字符之外)包含一个元音 这是给我的编程实验室的 以下是我向complier sas提供的信息,其中有一个错误,它不提供帮助。
请帮我纠正错误,谢谢

boolean containsVowel(String s)
{ 
    if(s.containsVowel("aeiouAEIOU")) 
    {
        return true;
    }
    else 
    {
        (s.substring(!=));
        return false
    }
}
编译器错误

代码实验室分析

备注: 你似乎在编译时出错了

这是我之前提出的另一个问题:

编写一个递归的int值方法len,它接受字符串并返回字符串中的字符数。 字符串的长度为: 如果字符串为空字符串(“”),则为0。 1大于第一个字符以外字符串其余部分的长度

以下是我的编程实验室想要的答案:

int len(String s)
{
if(s.equals("")){
    return 0;
}
 else {
return (1+len(s.substring(1)));}
}

java中的行以分号结尾。你好像少了一个

return false

这段代码有一些问题

  • s.containsVowel
    s
    是一个字符串,而Java字符串没有
    containsVowel
    方法。您应该调用自己的
    containsVowel
    方法,而不是字符串方法(它不存在)

  • 如果您进行了更改,这将是一个无限递归方法,因为您没有“基本情况”。使其退出的案例

  • (s.substring(!=)不编译。我不知道你在这里想干什么

  • 返回false
    不以分号结尾。如果你想让你的代码编译,它需要

  • 以下是使用伪代码处理此算法的方法

    containsVowel(String input)
        if (empty(input)) return false  //the base case
        char firstChar = getFirstCharOf(input)
        return firstChar.isAnyOf("vowelCharacters") || containsVowel(inputWithoutFirstChar(input))
    

    让我们抛开这段代码,从基本原则开始。(我对你的代码的一点意见是,程序必须按照语言所期望的方式编写——程序不是读心器,它们不知道你想要什么,它们只知道你键入的内容,而像
    (s.substring(!=);
    这样的东西100%没有意义,即使它在你的头脑中完全有意义。)


    递归方法的思想是它有一个基本情况和一个重复条件

    containsVowel的基本大小写是空字符串“-return false”

    重复条件是,如果当前字符不是元音,我们返回true,否则我们调用containsVowel,字符串短一个字符。这样,每个字符都会被检查,直到我们找到一个元音为止,如果我们用完了字符(基本大小写),我们就会中止

    通过查看
    s.charAt(0)
    并使用
    indexOf
    查看当前字符是否包含在
    “aeiouAEIOU”
    中,可以检查当前字符是否为元音

    您可以通过执行
    returncontainsvowel(s.substring(1)),将自己的字符串缩短一个
    (从第二个字符开始创建一个由
    s
    组成的字符串,例如短一个字符)

    您现在可以看到如何编写该方法了吗?

    • containsVowel()
      不是用于的有效方法
    • 语句以分号结尾(因此
      returnfalse
      变成
      returnfalse;
    • s.substring(!=)
      是一个语法错误,因为
      !=
      不是有效的符号
    • s.substring()
      创建一个新的
      字符串
      ,您不会在任何变量中捕获该字符串的结果(当然,在更正的符号之后)

    如果一个字符串有一个元音,有一种更简单的方法来破译它——它涉及正则表达式,你要检查的元音集(单词fly呢?),并可以使用进行验证。我将把这一部分作为练习留给读者。

    将代码作为Java虚拟机、JVM进行浏览,您会发现,如果让它编译,它将永远运行。哪种编译器只会说“有错误”?当然,这肯定是有用的。我是我的编程实验室使用Java编译器,而不需要其余的代码。请注意,如果您非常频繁地编译代码(可能只添加1或2行代码),然后在修复当前代码和it编译器之前不添加任何新代码,您的编程风格将受益匪浅iles是正确的。这项技术应该可以帮助您避免出现百出的错误。@Alorva Ex您非常困惑。下载Netbeans并在Netbeans中测试您的代码并不困难,例如,在myprogramminglab.com完全编译并按照您的测试结果运行之前。同样值得注意的是:他的
    包含了OWEL
    方法不是静态的,所以他要么需要将其声明为静态的,要么在它所属的任何类的实例上调用它。+1表示所有内容,尤其是伪代码(我可能使用“或”而不是
    |
    )+第三点是1。这是我下午做的。这是你在mt编程实验室做不到的。当你使用我的编程实验室时,你跳过所有你用netbeans写的东西,只写实际需要的方法。看上面我的第二个问题和答案。@Alorva Ex So,写下你要写的额外内容,这样你就可以编译和测试了在Netbeans中…然后只复制编程实验室期望的特定部分。这样,您将获得Netback的详细编译器错误反馈,更好地测试您自己的代码,您可以使用调试器等。当您对代码的工作方式感到满意时,您仍然可以使用编程实验室。我不知道问题在于这种策略。这是家庭作业,所以答案必须是递归的。我确实说过,基于正则表达式的方法更容易,而不是要求所规定的。不过,至少现在我明白了裸露的
    s.substring()
    是干什么用的。是的,如果你去掉了代码,那么没有什么是正确的,因为编译器会说你需要