我是Java新手,我试图解决一个挑战。我必须写一些词,并比较哪一个更长,以及有多少元音的时间越长。另外如果你写“结束”,写单词结束并打印别的东西,在我们的例子中你没有写任何单词。如何计算我们的字符串有多少元音?
输出示例在终端(CMD):
写字,或写入“结束”来结束写作:测试
写字,或写入“结束”来结束写作:三通
写一个字,或写“端”结束写作:测试
写一个字,或写“端”结束写作:年底字测试是最长的,它有2个元音。
输出例子,如果你不写任何字:
写一个字,或写“端”结束写作:
写一个字,或写“端”到末写:
写一个单词,或者写'end'结束写作:end你没写过任何单词。
程序应使用Scanner (Input)
,Switch Case
和Do While
编码。应使用方法equalsIgnoreCase()
比较字符串。
我尝试了很多次,而我所做的只是编写和删除代码。
这是我的代码:
import java.util.Scanner;
public class VowelFinder {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String word = null;
int num = 0;
String max = null;
final String SENTINEL = "end";
System.out.println(" ");
do {
System.out.print("Write a word, or write `" + SENTINEL + "` to end writing: ");
word = scan.nextLine();
if(!word.equalsIgnoreCase(SENTINEL)) {
int nr = countVowels(word);
if (num <= nr) {
num = nr;
max = word;
}
}
} while (!word.equalsIgnoreCase(SENTINEL));
if (max != null) {
System.out.println(" ");
System.out.println("Word `" + max + "` is longest word, and countains " + num + " vowels.");
}
else {
System.out.println(" ");
System.out.println("You din't wrote any word !");
}
}
private static int countVowels(String word) {
int counter = 0;
int vowels = 0;
while(counter < word.length()){
char ch = word.charAt(counter++);
switch (ch) {
//Lower Case
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'y':
//Upper Case
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'Y':
vowels++;
default:
// do nothing
}
}
return vowels;
}
}
问题是:
当我在终端这么做(CMD)
写一个字,或写“端'结束写作:
写一个字,或者写'end'结束写作:
写一个字,或写“端”结束写作:年底
它打印出我字'是最长的单词,并countains 0元音。,但它应该打印你没有写任何字。
有人可以帮我吗?我哪里错了?
它应该打印我如果我不写任何单词,你没有写任何单词。
我希望我很清楚,你可以帮助我。如果我不清楚,请问我。
感谢您的贡献。
@Jobin [这就是为什么我把Y](https://en.oxforddictionaries.com/explore/is-the-信雅元音或-A-辅音)。 – Emm
@Emi if if(max!= null && max!=“”){} – RohitS
@那么你必须尝试(string.equals(null)&& string.equals(“”))) – RohitS