Пока помогите - PullRequest
       16

Пока помогите

0 голосов
/ 24 февраля 2011

У меня есть проект для класса, где я должен попросить пользователя ввести данные для индекса массы тела и калькулятора площади поверхности тела.У меня есть оператор 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 ]

1 голос
/ 24 февраля 2011

Вот основная логика.

   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;
   }
0 голосов
/ 24 февраля 2011

Что ж, ваш цикл 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 выможет делать все, что захочет ИМТ.

0 голосов
/ 24 февраля 2011

Я предполагаю, что у вас есть переменные вне этого цикла, так что вы можете получить к ним доступ в любом месте.Таким образом, у вас будет что-то вроде этого:

while (true) // так что ваш цикл будет продолжаться вечно

здесь предложит пользователю один из трех вариантов, которые вы дали выше, затем вставьтевременная переменнаяНапример,

scanner sc=new Scanner(params)

choice=s.getnext() // или эквивалентный метод

запрашивает значение

, используя операторы if, чтобы увидеть, какая переменнаяизменить, основываясь на значении char, равном «choice» выше

, если пользователь вводит aq, используйте операторы return или break, чтобы выйти из цикла while.В противном случае, я уверен, что вы можете выяснить остальное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...