Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java';做while';循环不工作_Java_Loops_While Loop - Fatal编程技术网

Java';做while';循环不工作

Java';做while';循环不工作,java,loops,while-loop,Java,Loops,While Loop,我有以下代码: 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 Sca

我有以下代码:

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”(荷兰语中就是这样拼写圆圈的,哈哈)

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


为什么它不起作用?我没有收到任何错误或任何东西…

每次调用
nextDouble()
时,用户将输入一个双精度字符,然后按enter。这将在缓冲区中放置一个double和一个换行符。double由
nextDouble()
使用,但换行符会一直保留,直到调用
nextLine()

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

换言之,只是简单的改变

diameter = keyboard.nextDouble();


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

每次调用
nextDouble()
时,用户将输入一个double并按enter键。这将在缓冲区中放置一个double和一个换行符。double由
nextDouble()
使用,但换行符会一直保留,直到调用
nextLine()

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

换言之,只是简单的改变

diameter = keyboard.nextDouble();


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

每次调用
nextDouble()
时,用户将输入一个double并按enter键。这将在缓冲区中放置一个double和一个换行符。double由
nextDouble()
使用,但换行符会一直保留,直到调用
nextLine()

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

换言之,只是简单的改变

diameter = keyboard.nextDouble();


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

每次调用
nextDouble()
时,用户将输入一个double并按enter键。这将在缓冲区中放置一个double和一个换行符。double由
nextDouble()
使用,但换行符会一直保留,直到调用
nextLine()

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

换言之,只是简单的改变

diameter = keyboard.nextDouble();


要使用双精度后输入的换行符。

请使用以下代码读取J/N值,以继续或停止程序

nogmaals = keyboard.next();

使用以下代码读取J/N值,继续或停止程序

nogmaals = keyboard.next();

使用以下代码读取J/N值,继续或停止程序

nogmaals = keyboard.next();

使用以下代码读取J/N值,继续或停止程序

nogmaals = keyboard.next();

“不能打字”是什么意思?程序终止了吗?现在还不清楚什么不起作用。如果您回答
J
J
则循环将继续。如果你回答了其他问题,程序就会终止,对吗?@WhyCry Google translate:“如果你想再次运行程序,请键入‘Y’,否则按另一个键wilekurige。”。在荷兰语中是的是“Ja”。@user3024879,这是因为当你输入
5
并读取一个double时,你仍然有
在要读取的缓冲区中。在循环的最后,您读取一行(以获取
J
或其他内容),此时您将获得之前输入的尚未读取的尾随部分。解决方法是在每次阅读double后添加一个
nextLine()
。什么叫“无法键入”?程序终止了吗?现在还不清楚什么不起作用。如果您回答
J
J
则循环将继续。如果你回答了其他问题,程序就会终止,对吗?@WhyCry Google translate:“如果你想再次运行程序,请键入‘Y’,否则按另一个键wilekurige。”。在荷兰语中是的是“Ja”。@user3024879,这是因为当你输入
5
并读取一个double时,你仍然有
在要读取的缓冲区中。在循环的最后,您读取一行(以获取
J
或其他内容),此时您将获得之前输入的尚未读取的尾随部分。解决方法是在每次阅读double后添加一个
nextLine()
。什么叫“无法键入”?程序终止了吗?现在还不清楚什么不起作用。如果您回答
J
J
则循环将继续。如果你回答了其他问题,程序就会终止,对吗?@WhyCry Google translate:“如果你想再次运行程序,请键入‘Y’,否则按另一个键wilekurige。”。在荷兰语中是的是“Ja”。@user3024879,这是因为当你输入
5
并读取一个double时,你仍然有
在要读取的缓冲区中。在循环的最后,您读取一行(以获取
J
或其他内容),此时您将获得之前输入的尚未读取的尾随部分。解决方法是在每次阅读double后添加一个
nextLine()
。什么叫“无法键入”?程序终止了吗?现在还不清楚什么不起作用。如果您回答
J
J
则循环将继续。如果你回答了其他问题,程序就会终止,对吗?@WhyCry Google translate:“如果你想再次运行程序,请键入‘Y’,否则按另一个键wilekurige。”。荷兰语中的是“Ja”。@user3024879,这是因为当您输入
5