我正在尝试使用辅助方法来检查单词中的所有字符是否都是元音。
然后,我尝试创建另一种使用扫描仪作为参数的方法,并将不断要求用户输入单词,直到用户输入包含所有元音的单词为止。 (单词不一定是单词,可以是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";
}
}
}
任何帮助,将不胜感激。
谢谢。
答案 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
),但是这些对于这个问题。