虽然循环帮助

时间:2011-02-24 01:47:46

标签: java while-loop

我有一个课堂项目,我必须要求用户输入体重指数和体表面积计算器。我有一个if else语句,我需要放入while循环。我需要让它通过,如果用户输入'w',则调高权重变量和高度'h'。此外,如果用户输入'q'退出程序。我需要有关如何创建while循环的帮助。

import java.util.*;
public class Assignment2 {


public static void main(String[] args) {

    //Scanner
    Scanner stdIn = new Scanner(System.in);


    //Variables
    final double METERS_TO_CM = 100;   // The constant to convert meters to centimeters
    final double BSA_CONSTANT = 3600;  // The constant to divide by for bsa
    double bmi;                        // Body Mass Index
    double weight;                     // Weight in kilograms
    double height;                     // Height in meters
    String classification;             // Classifies the user into BMI categories 
    double bsa;                        // Body surface area
    char quit = stdIn.nextLine().charAt(0);

    System.out.print("Welcome to the BMI and BSA Calculator to begin enter weight in kilograms.");
    weight = stdIn.nextDouble();
    System.out.print("Enter height in meters: ");
    height = stdIn.nextDouble();


    bmi = weight/(height*height);

    while (quit != 'q');
    {
        if (bmi < 18.5)
        {
            classification = "Underweight";
        }
        else if (bmi < 25)
        {
            classification = "Normal";
        }
        else if (bmi < 30)
        {
            classification = "Overweight";
        }
        else
        {
            classification = "Obese";
        }

        System.out.println("Your classification is: " + classification);

        bsa = Math.sqrt(((height*METERS_TO_CM)*weight)/BSA_CONSTANT);
        System.out.printf("BMI: %.1f\n", bmi);
        System.out.printf("BSA: %.2f\n", bsa);
    }
}
}

3 个答案:

答案 0 :(得分:1)

这是基本逻辑。

   String inp = ask the user for input;
   while(!inp.equalsIgnoreCase("q")){
       if(inp is w){

       }else{
          if(inp is h){

          }
       }
       inp = ask user for another input;
   }

答案 1 :(得分:0)

我假设您在此循环之外有变量,以便您可以在任何地方访问它们。所以你会有这样的事情:

while(true)//所以你的循环将永远持续

此处提示用户输入上面给出的三个选项之一,然后输入一个临时变量。例如,

scanner sc=new Scanner(params)

choice=s.getnext() //或等效方法

提示输入值

使用if语句来查看要修改的变量,基于上面“选择”的char值

如果用户输入q,请使用returnbreak语句中断while循环。否则,我相信你可以弄清楚剩下的。

答案 2 :(得分:0)

好吧,你的while循环是正确的,所以你的问题可能实际上并不是如何创建while循环,而是如何让你的循环执行你想要的逻辑。

虽然您可以在循环之前和每个循环结束时简单地提示,但这仅适用于简单问题。既然你一次处理两个输入并运行if语句,我建议使用一个标志(一个控制是否保持循环的布尔值)

boolean keepLooping = true;

while(keepLooping)
{
    String userInput = //get input from user here

    if(userInput.equals(//whatever))
    {
        //do something
    }
    else if(userInput.equals(//whatever else))
    {
        //more stuff
    }
    else if(userInput.equals("q")) //the quitting condition!
    {
        keepLooping = false; //this tells our program to stop looping
    }
}
//we reached the end of the loop and keepLooping == false, so program will exit

在其他if / else块中,您可以完成所需的所有BMI内容。