我是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++;
}
}
}
答案 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;祝你好运!