【问题标题】:Asking the user to run the program again using a simple while loop使用简单的 while 循环要求用户再次运行程序
【发布时间】:2014-03-21 04:33:11
【问题描述】:

我正在尝试运行这个程序。用户输入数值后,程序将输出数值。我的问题是程序应该要求用户输入任何数字以再次运行程序或 -1 退出,但我无法确定在代码中放置 while 循环的位置。我需要知道在哪里放置 while 循环。它应该在java代码的开头还是结尾。代码如下。

import java.util.Scanner;
public class Program4 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System. in );

        //Declare variables
        double numb;
        double absolute, meanNum = 0, medianNum = 0;
        double num1, num2, num3;
        double m;
        double me;
        double ab;

        System.out.println("Enter a number"); //prompting the user to enter information
        numb = input.nextDouble();

        while (numb != -1) {

            ab = absolute(numb);
            System.out.printf("The absolute number is %f\n", ab); //prompting the user to enter information

            System.out.println("Enter three numbers"); //prompting the user to enter information
            num1 = input.nextDouble();
            num2 = input.nextDouble();
            num3 = input.nextDouble();

            m = meanNum(num1, num2, num3); // Calling the method Mean Number
            System.out.printf("The Mean Number is: %f\n", m);

            me = medianNum(num1, num2, num3); // Calling the method Median Number
            System.out.printf("The median Number is %f\n", me);
        }
    }
    //// Creating another method for finding Mean Number
    public static double meanNum(double num1, double num2, double num3) {
        double meanNumb = 0;
        meanNumb = (num1 + num2 + num3) / 3; // Calculating the mean number by summing the numbers entered divided by three

        return (meanNumb);
    }
    // Creating another method for finding Median Number
    public static double medianNum(double num1, double num2, double num3) {
        //Using the IF Statement to find the median value of three numbers entered
        double medianNum = 0;
        if (num1 < (num3) && (num1 > num2))
            medianNum = num1;
        if ((num2 < num1) && (num2 > num3))
            medianNum = num2;
        if ((num3 < num2) && (num3 > num1))
            medianNum = num3;
        if ((num1 < num2) && (num1 > num3))
            medianNum = num1;
        if ((num2 < num3) && (num2 > num1))
            medianNum = num2;
        if ((num3 < num1) && (num3 > num2))
            medianNum = num3;

        return (medianNum);
    }
    // Creating a separated method for finding the absolute value of a number
    public static double absolute(double numb) {
        double ab = 0;
        if (numb < 0) {
            ab = numb * -1;
        } else {
            ab = numb;


        }

        return ab;
    }
}

【问题讨论】:

    标签: java loops while-loop


    【解决方案1】:

    do-while 循环是您正在寻找的。应该是这样的:

    do {
    // whatever
    } while(numb != 1);
    

    do-while 循环确保循环至少运行一次,然后根据您的while 语句,它们将继续运行或退出。因此,您可以在 do-while 循环中放置以下行:

    System.out.println("Enter a number"); //prompting the user to enter information
    numb = input.nextDouble();
    

    在此之后,只需包含您的 while 循环中已有的所有内容。每次循环运行时,它都会要求用户输入一个数字,根据他们输入的数字,您的程序将继续运行或退出。

    您可以在此处查看 Oracle 的教程:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html

    更新:

    运行此程序时,您可能会遇到一些异常。我建议您执行以下操作以避免任何问题:

    do {
         System.out.print("Enter a number (Enter -1 to exit): "); //prompting the user to enter information
         numb = input.nextDouble();
    
    
         if (numb != -1) {
             ab = absolute(numb);
             System.out.printf("The absolute number is %f\n", ab); //prompting the user to enter information
    
             System.out.println("Enter three numbers"); //prompting the user to enter information
             num1 = input.nextDouble();
             num2 = input.nextDouble();
             num3 = input.nextDouble();
    
             m = meanNum(num1, num2, num3); // Calling the method Mean Number
             System.out.printf("The Mean Number is: %f\n", m);
    
             me = medianNum(num1, num2, num3); // Calling the method Median Number
             System.out.printf("The median Number is %f\n", me);
         }
    } while (numb != -1);
    

    if-statement 确保其余代码仅在用户输入除-1 之外的数字时运行。

    【讨论】:

    • 好的。我将 do 放在 System.out.println("Enter a number) 之前,而在 System.out.println("If you want to run the program again, press any number or -1 to quit"); 之后请查看输出照片的链接。由于某种原因,while 循环不起作用。 picpaste.com/Screen_Shot_2014-03-21_at_1.16.19_AM-qZZvBE4J.png
    • @user3444913 好的,它在做你想做的事吗?如果有问题或者你有什么不明白的地方,可以在这里留言,我会帮你解决的。
    • while 循环不起作用,正如您在我之前评论中附加的图片中看到的那样。即使我写了-1,程序又运行了
    • @user3444913 查看我的更新,如果您按照我在更新中显示的代码进行操作,它应该会运行。让我知道这是否适合你。你也可以告诉我你是如何更新你的代码(你把图片附加到的),我会告诉你它可能出了什么问题。
    • @user3444913 没问题。我很高兴它有所帮助。
    【解决方案2】:

    只需在 while 循环的末尾添加一条消息,您必须要求用户提供另一个输入并将该输入再次读入 numb,如下所示。

    System.out.println("Enter a number");
    numb = input.nextDouble();
    

    【讨论】:

      【解决方案3】:

      你可以使用 DO While 循环,它是出口控制的,不像 while 循环是入口控制的

      public static void main(String[] args) {
          // TODO Auto-generated method stub
          Scanner input = new Scanner(System. in );
      
          //Declare variables
          double numb;
          double absolute, meanNum = 0, medianNum = 0;
          double num1, num2, num3;
          double m;
          double me;
          double ab;
      
      
      
          do {
              System.out.println("Enter a number"); //prompting the user to enter information
              numb = input.nextDouble();
              ab = absolute(numb);
              System.out.printf("The absolute number is %f\n", ab); //prompting the user to enter information
      
              System.out.println("Enter three numbers"); //prompting the user to enter information
              num1 = input.nextDouble();
              num2 = input.nextDouble();
              num3 = input.nextDouble();
      
              m = meanNum(num1, num2, num3); // Calling the method Mean Number
              System.out.printf("The Mean Number is: %f\n", m);
      
              me = medianNum(num1, num2, num3); // Calling the method Median Number
              System.out.printf("The median Number is %f\n", me);
          } while (numb != -1);
      }
      

      【讨论】:

        【解决方案4】:

        您可以使用do.. while 循环!

        do {
            System.out.println("Enter a number"); //prompting the user to enter information
            numb = input.nextDouble();
        
            ab = absolute(numb);
            System.out.printf("The absolute number is %f\n", ab); //prompting the user to enter information
        
            System.out.println("Enter three numbers"); //prompting the user to enter information
            num1 = input.nextDouble();
            num2 = input.nextDouble();
            num3 = input.nextDouble();
        
            m = meanNum(num1, num2, num3); // Calling the method Mean Number
            System.out.printf("The Mean Number is: %f\n", m);
        
            me = medianNum(num1, num2, num3); // Calling the method Median Number
            System.out.printf("The median Number is %f\n", me);
        } while (numb != -1);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-02
          • 1970-01-01
          • 2020-03-23
          • 2014-06-06
          • 2014-09-22
          • 2013-02-02
          • 1970-01-01
          相关资源
          最近更新 更多