Java 循环不起作用,程序只是继续运行
所以我想写一个程序来满足这些要求,但是在使用循环方面有问题,因为程序根本无法运行。 程序应显示一个菜单,供用户选择以下操作。在操作完成后,此信息还会再次显示,直到用户退出程序Java 循环不起作用,程序只是继续运行,java,Java,所以我想写一个程序来满足这些要求,但是在使用循环方面有问题,因为程序根本无法运行。 程序应显示一个菜单,供用户选择以下操作。在操作完成后,此信息还会再次显示,直到用户退出程序 菜单包含以下项目,输入命名字母时将执行每个项目: 如果用户输入不同的字母,则不会发生任何事情或再次显示菜单 如果选择了菜单项A,则会显示提示以输入读取到字符串变量中的块。不得通过菜单项B、C和D的操作更改此变量!如有必要,必须在另一个字符串变量中创建记录的副本 如果用户执行菜单选项B,则读入记录将逐字符运行,并对
- 菜单包含以下项目,输入命名字母时将执行每个项目:
- 如果用户输入不同的字母,则不会发生任何事情或再次显示菜单
- 如果选择了菜单项A,则会显示提示以输入读取到字符串变量中的块。不得通过菜单项B、C和D的操作更改此变量!如有必要,必须在另一个字符串变量中创建记录的副本
- 如果用户执行菜单选项B,则读入记录将逐字符运行,并对其中的空格数进行计数,然后输出(例如,“在记录中找到3个空格”)
- 菜单项C确定句子中的第一个和最后一个单词(即从第一个到最后一个空格的所有内容),然后输出一个句子,其中这两个部分互换
- 示例:这将“夜间比室外冷”转换为“室外比夜间冷”
- 要确定第一个空格的位置,请使用函数indexOf。最后一个空间的位置最好使用lastIndexOf确定
- 菜单项C仅在句子包含至少2个单词且字符串的第一个和最后一个位置没有空格时才起作用。否则,应显示错误消息“句子必须包含至少2个单词,且第一个和最后一个位置不得出现空格”
- 使用菜单项D,所有元音(大写或小写)都将从句子中删除。然后,新句子也被输出
- 示例:从“你好,爷爷,我打电话给埃米尔”中,您可以看到“Hll p,ch hb ml ngrfn”
- 使用for循环遍历所有元音,这些元音预先存储在常量中!通过这种方式,您可以一次搜索一个元音,并在必要时删除它,直到所有出现的元音从字符串中消失
- 只有在之前已输入句子的情况下,才能选择菜单项B、C和D。否则,如果在菜单中输入B、C或D,则会显示错误消息“尚未输入任何句子!”将显示,并再次显示菜单
- 菜单项B、C和D的每次调用始终在用户输入的原始块上工作,而不是在可能已被先前执行的菜单项更改的块上工作!例如,如果连续多次执行菜单项C,则结果始终相同,并且每次都不会再次交换第一个字和最后一个字
- 通过再次输入菜单项A,输入的块也可以被新块覆盖
- 使用“X”,用户可以终止使用(免费版本)翻译的程序 公共静态void main(字符串[]args){ }
- 您需要学习如何使用调试器。然后您会发现变量
aktion
的值从未改变
您可以正确地显示while
循环每次迭代的菜单,但您只能要求用户输入一次选择,这是在最初进入循环之前
将下面的代码与您的代码进行比较,我还建议您使用调试器单步执行
String str1=null;
字符串aktion=null;
扫描仪=新的扫描仪(System.in);
而(!“X”。等于(aktion)){
System.out.format(“A)Satz eingeben”+%n“+”B)Anzahl Leerzeichen Bestinmen”+%n
+“C)1.让我们把麦汁倒在地上”+%n”+“D)所有的食物都倒在地上”
+%n“+”X)Ende“+%n”);
aktion=scanner.nextLine();
开关(aktion){
案例“A”:
System.out.println(“Bite Satz eingeben:”);
str1=scanner.nextLine();
打破
案例“B”:
如果(str1==null){
System.out.println(“Noch-kein-Satz-eingegeben!”);
}
否则{
System.out.println(语句调查员计数空格(str1)
+“Leerzeichen im Satz gefunden.”);
}
打破
案例“C”:
如果(str1==null){
System.out.println(“Noch-kein-Satz-eingegeben!”);
}
否则{
字符串str2=语句调查员。切换第一个和最后一个单词(str1);
系统输出打印项次(str2);
}
打破
案例“D”:
如果(str1==null){
System.out.println(“Noch-kein-Satz-eingegeben!”);
}
否则{
System.out.println(句子研究者除去元音(str1));
}
打破
案例“X”:
打破
}
}
这是否回答了您的问题?请将描述限于实际问题。您已经提供了所有需求,但没有说明问题所在。“simply not run”(根本不运行)并没有太多说明。请注意,虽然此副本将修复一个错误,并且您的循环将被输入,但您永远不会更改循环中aktion
的值,因此一旦进入循环,它将永远不会停止运行while(aktion!=“X”)
应该是while(!“X”.equals(aktion))
@ohgodspeiders我该怎么做?这就是为什么程序一直在运行,没有给我任何输出
A) Enter block
B) Determine number of spaces
C) Swap 1st and last word
D) Remove all vowels
X) End
String aktion = null;
Scanner scanner = new Scanner(System.in);
aktion = scanner.nextLine();
while (!"X".equals(aktion)){
System.out.format("A) Satz eingeben" + "%n" + "B) Anzahl Leerzeichen bestimmen" + "%n" + "C) 1. und letztes Wort vertauschen" + "%n" + "D) Alle Vokale entfernen" + "%n" + "X) Ende" + "%n");
switch (aktion) {
case "A":
System.out.println("Bitte Satz eingeben:");
str1 = scanner.nextLine();
break;
case "B":
if (str1 == null) {
System.out.println("Noch kein Satz eingegeben!");
} else {
System.out.println(SentenceInvestigator.countWhiteSpaces(str1) + " Leerzeichen im Satz gefunden.");
}
break;
case "C":
if (str1 == null) {
System.out.println("Noch kein Satz eingegeben!");
} else {
String str2 = SentenceInvestigator.switchFirstAndLastWord(str1);
System.out.println(str2);
}
break;
case "D":
if (str1 == null) {
System.out.println("Noch kein Satz eingegeben!");
} else {
System.out.println(SentenceInvestigator.removeVowels(str1));
}
break;
case "X":
break;
}
}