【发布时间】:2021-01-18 06:24:54
【问题描述】:
我正在尝试编写一个程序(实际上是程序的一部分)来检查是否有任何元音连续出现两次。
例如。 input = boo, output = o
这是我到目前为止的代码:
//j - displays any vowels which occur consecutively
System.out.print("\nj. ");
// have to give these variables a value
// otherwise the default statements won't work
char current_letter_1 = ' ', current_letter_2 = ' ';
//making strings for these characters so they are easier to output
String current_letter_1_string = String.valueOf(current_letter_1);
String current_letter_2_string = String.valueOf(current_letter_2);
//checking it against the sentence in lowercase so it's case insensitive
char low_letter = e.charAt(ind);
while (ind < a) {
current_letter_1_string = String.valueOf(current_letter_1);
current_letter_2_string = String.valueOf(current_letter_2);
low_letter = e.charAt(ind);
switch (low_letter) {
case 'a', 'e', 'i', 'o', 'u', 'y':
current_letter_1 = low_letter;
break;
default:
break;
}
ind += 1;
switch (low_letter) {
case 'a', 'e', 'i', 'o', 'u', 'y':
current_letter_2 = low_letter;
break;
default:
break;
}
if (current_letter_1 == current_letter_2) {
System.out.print(current_letter_2_string.trim() + " ");
} else {
}
//in case the same vowel is repeated more than twice in a row
}
while (low_letter == current_letter_2 && ind < a) {
low_letter = e.charAt(ind);
ind += 1;
}
if (low_letter != current_letter_2) {
ind += 1;
} else {
}
顺便说一句,因为这是一个更大的程序的一个小节,我会给你一些变量值:
Scanner sc(System.in);
String sentence = sc.nextLine();
int a = sentence.length();
String e = sentence.toLowerCase();
int ind = 0;
另外,这是给学校的,所以如果它看起来真的很奇怪,而你会以完全不同的方式做这件事,请多多包涵。这段代码有点有效,但输出总是很奇怪,即使使用trim(),变量仍然输出前面有空格。此外,如果sentence 包含多个重复的元音,则输出会再次出错。
非常感谢任何帮助。
【问题讨论】:
-
“变量仍然输出,前面有空格”你通过将
+ " "添加到print来明确打印它。还是你在说别的? -
不,我的意思是别的。那只是为了分离输出。我的意思是第一个输出变量前面有一堆空格。如果你愿意,我可以给你整个程序,你可以运行它,但不要觉得有义务。
-
这将有助于查看一些示例输入、一些示例输出以及您实际想要的输出。
-
是的,请给出整个程序。我们还需要输入,以及预期和实际输出。
-
我明白了。有人发布了答案。感谢您的回复。
标签: java string char switch-statement java.util.scanner