当前位置: 首页 > 知识库问答 >
问题:

要求用户使用简单的 while 循环再次运行程序

周浩博
2023-03-14

我正在尝试运行此程序。用户输入值后,程序将输出值。我的问题是,程序应该要求用户输入任何数字以再次运行程序或-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;
    }
}

共有3个答案

魏毅
2023-03-14

您可以使用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);
}
袁安志
2023-03-14

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

System.out.println("Enter a number");
numb = input.nextDouble();
柯浩壤
2023-03-14

“做-而”循环是你要找的。它将是这样的:

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

< code>do-while循环确保循环至少运行一次,然后根据您的< code>while语句,它们要么继续运行,要么退出。因此,您可以在< code>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语句确保代码的其余部分仅在用户输入的数字不是-1时运行。

 类似资料:
  • 本文向大家介绍简单掌握C++编程中的while与do-while循环语句使用,包括了简单掌握C++编程中的while与do-while循环语句使用的使用技巧和注意事项,需要的朋友参考一下 While 语句 重复执行语句,直到表达式计算为零。 语法 备注 expression 的测试在每次执行循环前发生;因此 while 循环执行零次或更多次。 表达式必须是整型、指针类型或包含明确的整型或指针类型转

  • 我已经尝试了一些while循环的方法,但似乎无法让它工作。我想一直请求用户输入,直到用户输入数字0为止,以下是我到目前为止的代码:

  • 问题内容: 我很难弄清楚为什么while循环实际上不会循环。它运行一次并停止。 我正在尝试使其循环,以便用户能够多次转换单位。任何帮助都欢迎! 问题答案: 问题在于,当您呼叫时,它会占用该号码,但不会占用该号码之后的换行符。要解决此问题,只需在调用后放一行代码。 示例和完整说明: 假设您输入“ km”,按回车,“ 123”,按回车。从程序的角度来看,输入流为。 该代码获取值,并且使输入超出第一个。

  • 所以我有一个简单的问题,我不是那么确定该怎么做,即使在尝试了相当长的一段时间。 我的问题是,我不太确定要键入什么,这样我的输入用户必须键入是或否,而不是键入其他东西。此外,当我尝试运行程序时,当我键入yes/no时,它直接跳转到else语句,而不是if语句。请帮忙:((我只是一个noob程序员)

  • 我正在设置一个,它在用户输入整数之前一直执行。但是,按照我现在的方式,循环在输入整数后再次打印消息,然后程序正常执行。有人能建议一种方法来使输入整数后不再打印该消息吗?谢了!

  • 我必须写一个使用循环的程序,计算a和b之间所有奇数的和(包括),其中a和b是输入。 我做了这个(如下),它工作得很好,但我注意到它有一个问题:当我输入一个较大的数字,然后输入一个较小的数字时,它返回0,但当我首先输入一个较小的数字时,它工作得很好。有什么快速的解决办法吗?:)