我是Java新手,我正在努力解决挑战。我必须写一些单词并比较哪一个更长,以及有多少元音就越长。此外,如果你写“结束”,写作结束并打印其他内容,在我们的案例你没有写任何单词。
终端(CMD)中的输出示例:
写一个单词,或写'结束'到结束写作:测试
写一个字,或写'结束'到结束写:tee
写一个字,或写'结束'到结束写作:测试
写一个单词,或写'结束'到结束写作:结束单词测试时间最长,有2个元音。
如果您不写任何单词,则输出示例:
写一个单词,或者写'结束'来结束写作:
写一个字,或写'结束'到结束写作:
写一个单词,或写'结束'到结束写作:结束你没有写任何字。
应使用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)中这样做时
写一个单词,或者写'结束'来结束写作:
写一个字,或写'结束'到结束写作:
写一个单词,或写'结束'到结束写作:结束
它打印我 Word''是最长的单词,并且有0个元音。,但它应该打印你没有写任何单词。
有人能帮助我吗?我哪里做错了?
如果我不写任何单词,它应该打印我你没有写任何单词。
我希望我很清楚,你可以帮助我。如果我不清楚请问我。
感谢您的贡献。
答案 0 :(得分:2)
将if条件更改为
if (word != null && !"".equals(word.trim()) && !word.equalsIgnoreCase(SENTINEL))
我添加了null
支票并执行了trim
以删除空格。
答案 1 :(得分:1)
我做了一些改动,它对我有用......
if (max != null && !max.trim().isEmpty() && max.length()>0) {
System.out.println(" ");
System.out.println("Word `" + max + "` is longest word, and countains " + num + " vowels.");
}
答案 2 :(得分:0)
您可以检查countVowels()
当前单词是否为空。
private static int countVowels(String word) {
int counter = 0;
int vowels = 0;
if(word.length() == 0){
return -1;
}
...
}
返回值小于0,因此max
不会被替换。