java - 这个java程序中的while循环有什么问题?

标签 java loops if-statement while-loop

当我运行程序时,它会运行 else 部分并执行,但在 if 部分它只会继续循环并且不会停止,直到我必须强行停止它。我正在尝试为其提供从 1 到 4 的选择参数以及不低于 1 的参数。除了参数之外还有其他选择吗?

import java.util.*;

public class Project4

{
    public static void showKilometers(double meters) //this is a parameterized function

    {
        double kilometers = meters * 0.001;
        System.out.println(meters +" meters is " + kilometers + " kilometers.");
    }

    public static void showInches(double meters)
    {
        double inches = meters * 39.37;
        System.out.println(meters +" meters is " + inches + " inches.");
    }

    public static void showFeet(double meters)
    {
        double feet = meters * 3.281;
        System.out.println(meters +" meters is " + feet + " feet.");
    }

    public static void quitProgram()
    {
        System.out.println("Goodbye!");
        System.out.println(0);
    }
    public static void showMenu()
    {
        System.out.println(" 1. Convert to kilometers ");
        System.out.println(" 2. Convert to inches ");
        System.out.println(" 3. Convert to feet ");
        System.out.println(" 4. Quit the program ");
        System.out.println(" ");
    }

    public static void main (String [] args)
    {

        double meters;
        int choice;



        Scanner keyboard = new Scanner (System.in);

        System.out.println("Enter a distance in meters: ");
        meters = keyboard.nextDouble();
        while (meters <=0 || meters > 0)
        {
            if (meters > 0)
            {
                showMenu();
                meters = keyboard.nextDouble();
            }
            else
            {
                System.out.println("Please enter a number greater than 1");
                meters = keyboard.nextDouble();
                showMenu();
            }
        }

        choice = keyboard.nextInt();
        switch(choice) //note the use of switch case
            {
            case 1: showKilometers(meters);
            break;
            case 2:showInches(meters);
            break;
            case 3:showFeet(meters);
            break;
            case 4:
            quitProgram();
            }
    }
}

最佳答案

这是一个无限循环。你不妨写while (true)

尝试 while (meters <= 0)while (meters >0)

或者:

Scanner keyboard = new Scanner (System.in);

System.out.println("Enter a distance in meters: ");
meters = keyboard.nextDouble();
while (meters < 1 || meters.isNaN())
{
    System.out.println("Please enter a number greater than 1");
    meters = keyboard.nextDouble();
    showMenu();
}

您的输出还指定“大于 1”,因此您的条件需要一致。

关于java - 这个java程序中的while循环有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434042/

相关文章:

java - 如何使用java中的swing在屏幕键盘上显示打字导师?哪种布局效果最好?

c - 将数组中的值设置为仅等于 1 或 0

python - 在 python 中嵌套数值积分

javascript - 如何获取每个函数中正在迭代的当前项?

r - 根据序列中的位置分配新值

java - 如何在 Firebase 身份验证中更新用户的详细信息

java - Apache httpclient 从本地文件系统获取文件?

java - IntelliJ IDEA 无法运行 Grails 2.3.0 项目

date - Power BI-自定义列,检查值是日期还是文本

Java while、if 和 else