显示用户输入数组

时间:2017-10-09 13:30:57

标签: java

我是Java的新手,正在为我的大学课程开设一个程序。奇怪的是,我觉得我的教授做错了什么,或者我没有正确地理解它。我过去编写了一些脚本和东西,但我并不是那么棒的编码应用程序。我更倾向于使用代码来自动执行某些操作。他给我们以下代码的任何方式,并要求我们计算人口BMI的20个输入。我觉得他给我们的代码不起作用,或者我在他设置的Array循环中的某个地方错过了一个步骤?我复制了他的代码,因为他告诉我们我也应该使用它来制作一个Jtext GUI但不确定他的代码是否正常工作..我试图打印我已经输入数组的结果但我不知道#39;什么都没有得到回报。

感谢您的帮助

enter code here
package bmi;


import javax.swing.* ;
import java.awt.* ;
import java.util.Arrays;
import java.util.Scanner ;

 public class Bmi {


public static void main(String[] args) {
   final int size = 20 ;
   String [] name = new String[size];
   double [] weight = new double[size];
   double [] height = new double[size];
   double [] BMI = new double[size];
   String Userquit ;
   final double BMIUnder = 18.5;
   final double BMINormal = 25.0;
   final double BMIOver  = 30.0;
   final double BMIObese = 30.0;

   int normalWeight = 0;
   int overWeight = 0 ;
   int obese = 0;
   Scanner keyboard = new Scanner(System.in);
   System.out.println("This program calculats BMI for 20 people");
   System.out.println("Please enter name, weight and height for everyone 
   firstI");

   int person = 0;
   while(person < size)
   {
       System.out.println("Enter name");
            name[person] = keyboard.nextLine();

       System.out.println("Enter weight in pounds");
            weight[person] = keyboard.nextDouble();

       System.out.println("Ener height in inches");
            height[person] = keyboard.nextDouble();

       BMI[person] = (weight[person]*703/height[person]*height[person]);

       System.out.println("Enter Y to continue or enter anything else 
       quit");
            Userquit = keyboard.next();

       if(Userquit.equals("Y")){
           person++;
       }else 
           break;
       }

       int i = 0;
       while(i < size){
           if (BMI[person] <= BMINormal)
                   {
                       normalWeight++;
                   }else if (BMI[person] <= BMIOver)
                               {
                                    overWeight++;
                      }else
                                    obese++;

                               }
                   }

       }

3 个答案:

答案 0 :(得分:1)

while(i < size){
       if (BMI[person] <= BMINormal)
               {
                   normalWeight++;
               }else if (BMI[person] <= BMIOver)
                           {
                                overWeight++;
                  }else
                                obese++;

                           }
               }

   }

这部分代码很奇怪。没有&#39; i&#39;变量递增,所以这个循环永远不会结束。顺便说一下比较BMI [人]已经增加的人没有意义,因为它是空的。 BMI [person-1]有意义,因为它存储最近输入数据的人的数据。对我来说你是对的,代码是错误的。

答案 1 :(得分:0)

最后你有一个无限循环:

    int i = 0;
    while(i < size){
        if (BMI[person] <= BMINormal)
        {
            normalWeight++;
        }else if (BMI[person] <= BMIOver)
        {
            overWeight++;
        }else
            obese++;
    }

i始终为0并且永远不会增加,因此您会陷入while循环。

答案 2 :(得分:0)

在Eclipse上运行此代码,我看到了一件需要修复的事情:

在第二个while循环中,您可以看到条件是 while(i<size),但我从未在这个循环中使用过,你真正想做的是使用person变量运行BMI数组 - 在这个循环中使用的IS作为数组索引,所以代替

int i = 0;

你应该初始化人:

person = 0;

然后,在while循环的底部,将其增加一个

person++;

希望它有帮助&amp;祝你好运!