有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Simple for loop,初学者

当你看到我的问题时,你就会知道我是Java新手。 我想:

  • 用转换菜单提示用户
  • 例如,如果他们选择5,请他们输入一个要转换为千克的输入
  • 继续给他们菜单,直到他们输入7退出

我的代码的问题是 -无论最初点击哪个数字,上面的第2步都不会出现。它仅在输入第二个数字后出现 -当7英寸进入时,它实际上并没有退出

我也是这个网站的新手,如果我问的问题不恰当,我深表歉意

这是密码

class Test
{
    public static void main(String[] args)
    {
        int number;
        int index;
        int input;
        Double conversion;

        index = 1;

        System.out.println("Enter 1 for Fahrenheit to Celius ");
        System.out.println("Enter 2 for Celius to Fahrenheit ");
        System.out.println("Enter 3 for Inches to Centimetres ");
        System.out.println("Enter 4 for Centimetres to Inches ");
        System.out.println("Enter 5 for Pounds to Kg ");
        System.out.println("Enter 6 for Kg to Pounds ");
        System.out.println("Enter 7 to quit ");
        number = EasyIn.getInt();

        for (index=1; index <=6; index++)

        {
            System.out.println("Enter 1 for Fahrenheit to Celsius ");
            System.out.println("Enter 2 for Celsius to Fahrenheit ");
            System.out.println("Enter 3 for Inches to Centimetres ");
            System.out.println("Enter 4 for Centimetres to Inches ");
            System.out.println("Enter 5 for Pounds to Kg ");
            System.out.println("Enter 6 for Kg to Pounds ");
            System.out.println("Enter 7 to quit ");
            number = EasyIn.getInt();

        if (number == 1)
            {
                System.out.print("Input an amount to convert to Celsius ");
                input = EasyIn.getInt();
                conversion = (5.0/9.0) * (input - 32);
                System.out.println("Your input to Celsius is " + conversion);
                System.out.println("Press 7 to quit");
            }

        if (number == 2)
            {
                System.out.print("Input an amount to convert to Fahrenheit ");
                input = EasyIn.getInt();
                conversion = input * 2.8;
                System.out.println("Your input to Fahrenheit is " + conversion);
                System.out.println("Press 7 to quit");
            }

        if (number == 3)
            {
                System.out.print("Input an amount to convert to Centimetres ");
                input = EasyIn.getInt();
                conversion = input * 2.54;
                System.out.println("Your input to Centimtres is " + conversion);
                System.out.println("Press 7 to quit");
            }

        if (number == 4)
            {
                System.out.print("Input an amount to convert to Inches ");
                input = EasyIn.getInt();
                conversion = input * 0.393701;
                System.out.println("Your input to Inches is " + conversion);
                System.out.println("Press 7 to quit");
            }

        if (number == 5)
            {
                System.out.print("Input an amount to convert to Kg ");
                input = EasyIn.getInt();
                conversion = input * 0.453592;
                System.out.println("Your input to Kgs is " + conversion);
                System.out.println("Press 7 to quit");
            }

        if (number == 6)
            {
                System.out.print("Input an amount to convert to Pounds ");
                input = EasyIn.getInt();
                conversion = input * 2.20462;
                System.out.println("Your input to pounds is " + conversion);
                System.out.println("Press 7 to quit");
            }
        }
    }
}

共 (2) 个答案

  1. # 1 楼答案

    如果在四个循环中使用索引,可以这样修改循环:

    while (number != 7) {
        // ...
    }
    

    在第一次迭代中,您将显示两次菜单。循环前一个,循环内另一个。您可以删除循环前显示菜单的代码,并初始化循环值,或使用do while bucle

    do {
        // Show menu code
        // Read user action
        // Selected action code
    } while (number != 7)
    
  2. # 2 楼答案

    System.out.print("Input an amount to convert to Celsius ");
    

    System.out流被显式刷新或打印新行之前,该输出不会到达显示器。在这两种情况发生之前,您会继续期待用户输入,因此不会看到提示

    这是因为一般来说,当大量数据通过输出流发送时,输出流被缓冲以优化性能PrintStream自动刷新行为,这使得这个问题在大多数情况下不可见。它的工作原理是在行的每一端刷新标记,而不是用print发送