**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
23天前关门了。
改进这个问题
switch语句崩溃后,我在java中的while循环无法进行下一步。用户可以选择要绘制的图形,然后选择一些参数。在它被绘制之后,菜单应该会再次出现,但是在它被绘制之后,它所做的一切都会把代码从开关盒扔到默认的盒中,我不能再在控制台中写了
Scanner input = new Scanner(System.in);
Boolean isValid = true;
while (isValid) {
System.out.println("Welche Figur möchten Sie eingeben? ");
System.out.println("(Auswahl: Rechteck, Dreieck oder Kreis)");
String choosenFigure = input.nextLine();
switch (choosenFigure.toLowerCase()) {
case "reechteck":
itsARectangle(input);
break;
case "dreieck":
itsATriangle(input);
break;
case "kreis":
itsACircle(input);
break;
default:
System.out.println("Keine gueltige Figur!");
break;
}
}
测试用例:
Welche Figur möchten Sie eingeben?
(Auswahl: Rechteck, Dreieck oder Kreis)
Kreis
Geben Sie den Mittelpunkt an:
X: 50
Y: 50
Geben Sie die Anzahl der Segmente an:
10
Geben Sie den Radius an:
50
Flaecheninhalt:
22.21441469079183
Welche Figur möchten Sie eingeben?
(Auswahl: Rechteck, Dreieck oder Kreis)
Keine gueltige Figur! // not what i want
Welche Figur möchten Sie eingeben?
(Auswahl: Rechteck, Dreieck oder Kreis)
// cant write anymore
1条答案
按热度按时间anauzrmj1#
我所期待的是发生在里面
itsACircle
,你在打电话吗nextInt
或者nextDouble
上input
扫描仪对象。这样做是从控制台读取下一个数值,但不读取数值后面的换行符。所以当你离开的时候itsACircle
,循环,然后打电话input.nextLine
第二次,用户输入一个数字并点击“return”时,输入流中仍然存在的换行符会导致从该调用返回一个空行,而无需在终端键入任何内容。解决这个问题的办法是
nextLine
一个额外的时间后,阅读号码,然后再打电话nextLine
并使用结果。这将从输入流中删除额外的换行符,以便在调用nextLine
同样,为了获得一行输入,您的程序将等待用户的输入并正确进行。这是使用scanner从控制台读取输入时遇到的常见问题。为了清楚起见,这里有一个例子:
如果没有第4行,第5行将不会停止用户输入,并会导致
anotherString
包含空字符串。