我是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