gpt4 book ai didi

Java 'do while' 循环不工作

转载 作者:行者123 更新时间:2023-12-01 22:17:45 24 4
gpt4 key购买 nike

我有这个代码:

import java.util.*; 

public class Vormpjes {

public static void main(String[] args){
String vorm;
String nogmaals;
double diameter;
double basis;
double hoogte;

Scanner keyboard = new Scanner(System.in);

do {
System.out.println("Kies uit de 'cirkel', 'driehoek' of 'vierhoek':");
vorm = keyboard.nextLine();

if (vorm.equals("cirkel")){
System.out.println("Geef een diameter op (in cm)");
diameter = keyboard.nextDouble();

cirkel C1 = new cirkel();
C1.setDiam(diameter);
System.out.println("De diameter = " + C1.getDiam() + " cm");
System.out.println("De straal = " + C1.getRadius() + " cm");
System.out.println("De oppervlakte van de cirkel = " + C1.berekenOpp() + " cm2");
System.out.println("");
}

if (vorm.equals("driehoek")){
System.out.println("Geef de basis van de driehoek (in cm)");
basis = keyboard.nextDouble();

driehoek D1 = new driehoek();
D1.setBasis(basis);
System.out.println("Geef de hoogte van de driehoek (in cm)");
hoogte = keyboard.nextDouble();
D1.setHoogte(hoogte);
System.out.println("De oppervlakte = " + D1.berekenOppDriehoek() + " cm2");
System.out.println("");
}

System.out.println("Typ 'J' in als u het programma nogmaals wilt uitvoeren, druk anders op een andere wilekeurige toets.");
nogmaals = keyboard.nextLine();
}
while (nogmaals.equalsIgnoreCase("J"));
}
}

还有“cirkel”类(这就是荷兰语中“圆”的拼写方式,哈哈)

public class cirkel extends Vormpjes{

public double diam;
public double r;

//constructor
public cirkel(){

}

public double getDiam(){
return this.diam;
}

public void setDiam(double diam){
this.diam = diam;
}

public double getRadius(){
r = 0.5 * getDiam();
return this.r;
}

public double berekenOpp(){
return Math.PI * r * r;
}

public double berekenOmtrek(){
return 2 * Math.PI * r;
}

}

当程序询问用户是否要再次运行该程序时,我无法在 while 条件后输入任何内容。

为什么不工作?我没有收到错误或任何错误...

最佳答案

每次调用 nextDouble() 时,用户都会输入一个 double 值并按 Enter。这将在缓冲区中放入一个 double 值和一个换行符。 double 被 nextDouble() 消耗,但换行符会一直存在,直到您调用 nextLine()

在您的情况下,这会成为一个问题,因为当您要求用户提供 J (或其他内容)时,“旧”换行符会在用户设法输入任何内容之前被消耗掉。

换句话说,只需更改

diameter = keyboard.nextDouble();

diameter = keyboard.nextDouble();
keyboard.nextLine();

使用在 double 后输入的换行符。

关于Java 'do while' 循环不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30652627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com