Я новичок в Java, и я пытаюсь решить проблему. Я должен написать несколько слов и сравнить, какой из них длиннее, и сколько гласных - дольше. Также, если вы пишете «конец», записываете слова до конца и печатаете что-то еще, в нашем случае Вы не написали ни одного слова.Как подсчитать, сколько гласных имеет наша строка?
Выход Пример в терминале (ЦМД):
Написать слово, или написать «конец», чтобы закончить запись: Тест
Написать слово, или написать «конец», чтобы закончить запись: тройник
Написать слово, или написать «конец», чтобы закончить запись: тестирование
Написать слово, или написать «конец», чтобы закончить запись: конецтестирование слова является самым длинным и иметь 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- письмо-я-гласный или-а-согласные). – Emm
@Emi try if (max! = Null && max! = "") {} – RohitS
@ тогда вы должны попробовать (string.equals (null) && string.equals (""))) – RohitS