Java编程-字符串类和使用方法

Java编程-字符串类和使用方法,java,Java,我正在做一个介绍的作业。到Java编程类,我想我已经差不多完成了,但我似乎做错了什么。我尝试了几种方法来修复代码,但都失败了。我不熟悉String类中的方法。我的任务是创建一个具有特定要求的英语翻译器,我在下面的代码中对其进行了注释,并使用String split()方法。我尝试输出分配的测试用例,但它没有调用我创建的方法 例如,“西班牙的雨水主要停留在平原上”假设输出为:“西班牙的ain reh主要停留在平原上” 如果您能提供有关如何修复代码的反馈/建议,我将不胜感激。多谢各位 public

我正在做一个介绍的作业。到Java编程类,我想我已经差不多完成了,但我似乎做错了什么。我尝试了几种方法来修复代码,但都失败了。我不熟悉String类中的方法。我的任务是创建一个具有特定要求的英语翻译器,我在下面的代码中对其进行了注释,并使用String split()方法。我尝试输出分配的测试用例,但它没有调用我创建的方法

例如,“西班牙的雨水主要停留在平原上”假设输出为:“西班牙的ain reh主要停留在平原上”

如果您能提供有关如何修复代码的反馈/建议,我将不胜感激。多谢各位

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    String userInput;


    System.out.println("Enter a string: ");
    userInput = keyboard.nextLine();

    String[] words = userInput.split("\\s+");

    for (String w : words) {

        System.out.print(wordConvert(w) + " ");
    }

}

static boolean isVowel(char c) {
    if (c.substring(0, 0).equals('a') || c.substring(0, 0).equals('e') || c.substring(0, 0).equals('i') || c.substring(0, 0).equals('o') || c.substring(0, 0).equals('u'))
        return true;

    else
        return false;
}

public static String wordConvert(String word) {

    String wordOutput = word;
    String whatIsPassed = word.substring(0,0);
    if (isVowel(word.substring(0, 0))) {
        // vowel
        wordOutput = word + "-eh";
        return wordOutput;
    } else {
        // all consonants
        if (!isVowel(word.substring(1, 1)) || (!isVowel(word.substring(1, 1)) && !isVowel(word.substring(2, 2)))) {

            // escape with no changes
            return wordOutput;
        }

        else {
            // single consonant
            wordOutput = word.substring(1) + "-" + word.substring(0, 0) + "eh";
            return wordOutput;

        }

    }
}

对于
isVowel
函数,您需要

c.charAt(0) == ('a')
或长度为1的子字符串。现在,您正在将空字符串与元音列表进行比较,这将始终返回false。这类似于每次使用子字符串时,
substring(x,x)
将始终为空


使用
charAt
方法更简单,因为您正在进行字符v字符比较。

对于
isVowel
函数,您需要

c.charAt(0) == ('a')
 if (c.substring(0, 0).equals('a')...
或长度为1的子字符串。现在,您正在将空字符串与元音列表进行比较,这将始终返回false。这类似于每次使用子字符串时,
substring(x,x)
将始终为空

使用
charAt
方法要简单得多,因为您正在执行character v character比较

 if (c.substring(0, 0).equals('a')...
是错误的,
char
是一个基本类型,而不是一个对象,尽管它不能有方法
char
使用
=
检查是否相等。然后再次说明,
char
是单个字符;不可能有子字符串

Character
类中,有一些内置的方便方法是用Java定义的

是错误的,
char
是一个基本类型,而不是一个对象,尽管它不能有方法
char
使用
=
检查是否相等。然后再次说明,
char
是单个字符;不可能有子字符串


Character
类中打包了一些Java中定义的内置便利方法。

您还不太了解。。。在修复了琐碎的编译器错误,并重写
is元音
以获取
char
并简化其逻辑后,这似乎可以正常工作:

static boolean isVowel(char c) {
    switch (c) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            return true;
    }
    return false;
}

public static String wordConvert(String word) {
    String wordOutput = word;
    if (isVowel(word.charAt(0))) {
        // vowel
        wordOutput = word + "-eh";
        return wordOutput;
    } else {
        // all consonants
        if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
            // escape with no changes
            return wordOutput;
        } else {
            // single consonant
            wordOutput = word.substring(1) + "-" + word.charAt(0) + "eh";
            return wordOutput;
        }
    }
}
wordConvert
可以进一步简化为:

public static String wordConvert(String word) {
    if (isVowel(word.charAt(0))) {
        return word + "-eh";
    }
    if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
        return word;
    }
    return word.substring(1) + "-" + word.charAt(0) + "eh";
}

你不太远。。。在修复了琐碎的编译器错误,并重写
is元音
以获取
char
并简化其逻辑后,这似乎可以正常工作:

static boolean isVowel(char c) {
    switch (c) {
        case 'a':
        case 'e':
        case 'i':
        case 'o':
        case 'u':
            return true;
    }
    return false;
}

public static String wordConvert(String word) {
    String wordOutput = word;
    if (isVowel(word.charAt(0))) {
        // vowel
        wordOutput = word + "-eh";
        return wordOutput;
    } else {
        // all consonants
        if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
            // escape with no changes
            return wordOutput;
        } else {
            // single consonant
            wordOutput = word.substring(1) + "-" + word.charAt(0) + "eh";
            return wordOutput;
        }
    }
}
wordConvert
可以进一步简化为:

public static String wordConvert(String word) {
    if (isVowel(word.charAt(0))) {
        return word + "-eh";
    }
    if (!isVowel(word.charAt(1)) || !isVowel(word.charAt(2))) {
        return word;
    }
    return word.substring(1) + "-" + word.charAt(0) + "eh";
}

谢谢你的帮助!谢谢你的帮助!谢谢你的提示。代码开始让我困惑,因为我开始切换东西,并收到错误消息。谢谢你的提示。代码开始让我困惑,因为我开始切换东西,并收到错误消息。谢谢你的帮助。我开始把事情弄得一团糟,开始让我感到困惑。你让它更容易理解。在String类中,我需要更多的练习和学习方法。再次感谢。谢谢你的帮助。我开始把事情弄得一团糟,开始让我感到困惑。你让它更容易理解。在String类中,我需要更多的练习和学习方法。再次感谢。