Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';我无法找出方法的参数_Java_Arrays_Arraylist_Methods_Arguments - Fatal编程技术网

Java Can';我无法找出方法的参数

Java Can';我无法找出方法的参数,java,arrays,arraylist,methods,arguments,Java,Arrays,Arraylist,Methods,Arguments,我有一个学校任务,我必须创建一个代码来创建和填充一个数组,然后使用这些数据。我必须计算BMI,确定他们的BMI是否正常,BMI正常的人的名字应该输出到控制台 我陷入困境的地方是,当调用方法输出名称时,我无法找到正确的参数。可能还有其他问题,如果是这样的话,请纠正我 这是我的密码: import java.util.ArrayList; import java.util.Random; import java.util.Scanner; class TreatedPerson { St

我有一个学校任务,我必须创建一个代码来创建和填充一个数组,然后使用这些数据。我必须计算BMI,确定他们的BMI是否正常,BMI正常的人的名字应该输出到控制台

我陷入困境的地方是,当调用方法输出名称时,我无法找到正确的参数。可能还有其他问题,如果是这样的话,请纠正我

这是我的密码:

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

class TreatedPerson {

    String name = "";
    int age;
    int height;
    int weight;

    @Override
    public String toString() {
        return "Name: " + name + " \tAge: " + age + " \tHeight: " + height + " \tWeight: " + weight;
    }
}

public class B1 {

    static void fillTreatedPerson(ArrayList<TreatedPerson> treatedpeople, int db) {
        Random rnd = new Random();
        for (int i = 0; i < db; i++) {
            TreatedPerson tp = new TreatedPerson();
            tp.name = ("Szemely_" + (i + 1));
            tp.age = rnd.nextInt(99 - 10 + 1) + 10;
            tp.height = rnd.nextInt(200 - 150 + 1) + 150;
            tp.weight = rnd.nextInt(150 - 40 + 1) + 40;
            treatedpeople.add(tp);
        }
    }

    static void outputTreatedPerson(ArrayList<TreatedPerson> treatedpeople) {
        for (TreatedPerson tp : treatedpeople) {
            System.out.println(tp);
        }
    }

    static double BMI(TreatedPerson tp) {
        return tp.weight / (tp.height * tp.height);
    }

    static boolean normalBMI(double bmi) {
        boolean bmindex = false;
        if (bmi > 18.5 && bmi < 24.99) {
            return bmindex = true;

        }
        return bmindex;
    }

    static void ifnormalBMI(TreatedPerson tp, boolean normalBMI) {
        if (normalBMI) {
            System.out.println(tp.name);
        }
    }

    public static void main(String[] args) {
        ArrayList<TreatedPerson> treatedpeople = new ArrayList<>();
        fillTreatedPerson(treatedpeople, 5);
        outputTreatedPerson(treatedpeople);
        ifnormalBMI();
    }
}
import java.util.ArrayList;
导入java.util.Random;
导入java.util.Scanner;
阶级待遇者{
字符串名称=”;
智力年龄;
内部高度;
整数权重;
@凌驾
公共字符串toString(){
返回“姓名:”+Name+“\tAge:“+age+”\tHeight:“+height+”\tWeight:“+weight”;
}
}
公共B1级{
静态无效填充处理人员(ArrayList处理人员,int db){
随机rnd=新随机();
对于(int i=0;i18.5&&bmi<24.99){
返回bmindex=true;
}
返回bmindex;
}
静态无效ifnormalBMI(TreatedPerson tp,布尔normalBMI){
if(正常体重指数){
System.out.println(tp.name);
}
}
公共静态void main(字符串[]args){
ArrayList treatedpeople=新ArrayList();
填写治疗人员(治疗人员5人);
输出被治疗者(被治疗者);
ifnormalBMI();
}
}

由于
如果正常体重指数
将一个
受治疗的人
和一个
布尔值
作为参数,因此您必须在循环中调用它以打印出体重指数正常的人的姓名。大概是这样的:

for (TreatedPerson tp : treatedpeople) {
    double bmi = BMI(tp);
    boolean normal = normalBMI(bmi);
    ifnormalBMI(tp, normal);
}
您可以将此方法设置为类似于
outputCreatedPerson
的方法,这样您只需在
main
方法的一行中调用它


我在代码中看到的另一个问题是此方法:

static boolean normalBMI(double bmi) {
    boolean bmindex = false;
    if (bmi > 18.5 && bmi < 24.99) {
        return bmindex = true;

    }
    return bmindex;
}
你应该:

  • 环游所有的人
  • 计算他们的体重指数
  • 确定体重指数是否正常
  • 如果是,请打印他们的姓名

  • 你的程序中还有一个错误,BMI总是被计算为零。这是因为您正在执行以下方法:


    除此之外,BMI是用身高(米)计算的。您似乎以厘米为单位存储了高度。因此,所有BMI值都非常非常小(小于1)。

    您应该在for循环外部而不是内部实例化对象 使用getter实现简单性(如果您不了解getter,请使用谷歌) 将arraylist传递给BMI方法, 现在使用for循环计算每个人的bmi。你不是只计算一个人的体重指数。正当这就是为什么需要for循环。通过公式计算bmi。并将其存储在arraylist中。 接下来,将bmi值传递给checkBMI方法(双倍bmi) 再次创建for循环(int i=0;i18.5&&if-arraylist.get(i).getBMI<24.99)
    System.out println(arraylist.get(i).getName)

    什么是BMI???是体重指数我不明白你的问题是什么。您的方法获取一个列表或人员,您使用一个列表或人员调用它。。。你在什么地方出错了吗?
    static boolean normalBMI(double bmi) {
        return (bmi > 18.5 && bmi < 24.99);
    }
    
    for (TreatedPerson person : treatedpeople)
    {
        double bmi = BMI(person);
        boolean isNormalBmi = normalBMI(bmi);
        ifnormalBMI(person, isNormalBmi);
    }
    
    static double BMI(TreatedPerson tp) {
        return tp.weight / (tp.height * tp.height);
    }