如何使用辅助方法检查元音并在Java中返回字符串?

时间:2018-10-14 22:10:07

标签: java methods return

我正在尝试使用辅助方法来检查单词中的所有字符是否都是元音。

然后,我尝试创建另一种使用扫描仪作为参数的方法,并将不断要求用户输入单词,直到用户输入包含所有元音的单词为止。 (单词不一定是单词,可以是ieuo)。

我无法弄清楚该方法如何验证扫描仪是所有元音,然后返回正确的输出。

这是我到目前为止所拥有的:

import java.util.*;

public class LabFinish {

    public static void main(String[] args) {
        System.out.println("Enter a word: ");
        Scanner scan = new Scanner(System.in);
        askForWords(scan);

    public static boolean isAllVowels(Scanner scan) {
        String str = scan.nextLine();
        for (int i = 0; i <= str.length(); i++)
            if ((str.charAt(i) == 'a') ||
                    (str.charAt(i) == 'e') ||
                    (str.charAt(i) == 'i') ||
                    (str.charAt(i) == 'o') ||
                    (str.charAt(i) == 'u')) {
                return true;
            }
            return false;
    }

    public static String askForWords(Scanner scan) {
        if (isAllVowels(scan) == true) {
            return "Finally all vowels, we are done.";
        }
        else {
            System.out.println("Enter a word: ");
            Scanner scan1 = new Scanner(System.in);
            if (isAllVowels(scan1) == true) {
                return "Finally all vowels, we are done.";
            }
            else {
                return "Enter a word";
            }

        }
    }

任何帮助,将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

几件事应该可以帮助您前进:

从方法中

返回字符串不会在任何地方输出。因此,替换

askForWords(scan);

使用

System.out.println(askForWords(scan));
main()中的

将为您显示该方法的结果。

在检查元音时,您需要遍历整个单词,而不是在遇到第一个元音时停下来。使用当前代码,最简单的解决方法是将return语句的值和比较的真实值求反:

for (int i = 0; i < str.length(); i++) {
    if ( !( // <- if the string has any other characters than the ones below, return a falsey
          (str.charAt(i) == 'a') 
            || (str.charAt(i) == 'e') 
            || (str.charAt(i) == 'i') 
            || (str.charAt(i) == 'o')
            || (str.charAt(i) == 'u'))) {
        return false;
    }
}
return true;

您还遇到其他一些问题,例如,代码最多只能运行两个输入字符串(您需要一个循环而不是单个if-else),但是这些对于这个问题。