【问题标题】:Program is exiting at the wrong time程序在错误的时间退出
【发布时间】:2015-11-19 22:01:51
【问题描述】:

当输入值“999”时,我的循环开始工作并退出。

我不确定从这里开始做什么,因为我的程序没有完全按照我想要的方式运行。

目前,循环在 'num1' 'num2' 和 'num3' 被满足后退出。我希望程序在输入值“999”后立即退出;不是在 num1、2 和 3 都已输入时。

这是我的代码:

import java.util.Scanner;

public class SumAverage {
    static Scanner keyboard = new Scanner(System.in);

    public static void main(String[] args) {
        System.out.printf("Please Enter the first number%n");
        float num1 = keyboard.nextFloat();

        System.out.printf("Please enter the second number%n");
        float num2 = keyboard.nextFloat();

        System.out.printf("Please enter the third number%n");
        float num3 = keyboard.nextFloat();

        float sum = (num1 + num2 + num3);               //calculates sum
        float average = (num1 + num2 + num3) / 3;     //calculates average

        for(int x = 0; x < 1; x++) {
            if (num1 == 999 || num2 == 999 || num3 == 999) {
                break;
            }
            System.out.printf("Sum: %.0f %nAverage: %.2f", sum, average);
        }
    }
}

【问题讨论】:

  • 我刚刚测试了你的代码,它计算出的平均值没有问题。
  • if(num1 != 999) {... 仅当 num1 不是 999 时才想运行的代码放在这里 ...}
  • 请查看下面给出的答案。

标签: java loops


【解决方案1】:

如果我们查看您的代码当前的编写方式,由于没有附加任何类型的条件,用户将始终需要输入 3 个值。

我建议使用带有条件的“System.exit”来测试用户输入的值是否为 999。试着从那里开始看看你能做什么。

这里有一些关于“System.exit”的documentation,可帮助您更好地了解它的工作原理。

【讨论】:

    【解决方案2】:

    你的 for 循环只循环一次,所以我认为你需要做的是更改代码的某些方面

    public class Calculator{
        public static void main(String[] args){
            Scanner keyboard = new Scanner(System.in);
            float num1;
            float num2;
            float num3;
            while (true){ //This will run forever until we break the loop
                num1 = keyboard.nextFloat();
                if (num1 == 999){
                    break;
                }
                num2 = keyboard.nextFloat ();
                if (num2 == 999){
                    break;
                }
                num3 = keyboard.nextFloat ();
                if (num3 == 999){
                    break;
                }
                System.out.println("The average is: " + (num1 +num2+num3)/3);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      如果您真的希望程序在输入 999 值后立即结束,您可以将您的 main() 方法更改为:

      public static void main(String[] args) {
          System.out.printf("Please Enter the first number%n");
          float num1 = keyboard.nextFloat();
          if (num1 == 999) {
              System.exit(0);
          }
      
          System.out.printf("Please enter the second number%n");
          float num2 = keyboard.nextFloat();
          if (num2 == 999) {
              System.exit(0);
          }
      
          System.out.printf("Please enter the third number%n");
          float num3 = keyboard.nextFloat();
          if (num3 == 999) {
              System.exit(0);
          }
      
          float sum = (num1 + num2 + num3);             // calculates sum
          float average = (num1 + num2 + num3) / 3;     // calculates average
      
          System.out.printf("Sum: %.0f %nAverage: %.2f", sum, average);
      }
      

      【讨论】:

        猜你喜欢
        • 2012-08-14
        • 2011-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        • 2019-04-22
        • 1970-01-01
        • 2021-11-12
        相关资源
        最近更新 更多