gpt4 book ai didi

Java生成随机对象[作业]

转载 作者:行者123 更新时间:2023-11-30 11:46:05 29 4
gpt4 key购买 nike

好的,我修复了静态错误。现在我只是想找出为什么每个对象都得到相同的条目(即相同的名字、年龄、体重等)。这是代码:

package classlab3b;

import classlab3B.BodyMassIndex;
import java.text.DecimalFormat;
import java.util.Random;
import java.util.Scanner;

/**
*
* @author ccity
*/
public class ClassLab3B {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Please enter the number of people:");
//asks user to input number of people
int numberOfPeople;
//declares integer variable for number of people
Scanner input = new Scanner(System.in);
//creates system input scanner
numberOfPeople = input.nextInt();
//captures user input for number of people
BodyMassIndex[] a = new BodyMassIndex[numberOfPeople];
//creates an array of BodyMassIndex the size of numberOfPeople
String name = loadRandomNames(a);
//loads object with random name
int age = loadRandomAges(a, numberOfPeople);
//loads object with random age
double weight = loadRandomWeights(a);
//loads object with random weight
double height = loadRandomHeights(a);
//loads object with random height
createObjectsToFillArray(a, name, age, weight, height, numberOfPeople);
//creates "x" objects to fill the array
double BMI = BodyMassIndex.getBodyMassIndex();
//gets BMI from getBodyMassIndex method in BodyMassIndex.java
String status = BodyMassIndex.getStatus();
//gets status from getStatus method in BodyMassIndex.java
//double BMI = BodyMassIndex.bmix.getBodyMassIndex();
//String status = BodyMassIndex.bmix.getStatus();
printArray(a, name, age, weight, height, BMI, status);
//prints array


System.out.println(" ");
System.out.println("Current Population");
System.out.println(" ");
System.out.println("Obese: " + BodyMassIndex.numberOfObese);
System.out.println("Overweight: " + BodyMassIndex.numberOfOverweight);
System.out.println("Normal: " + BodyMassIndex.numberOfNormal);
System.out.println("Underweight: " + BodyMassIndex.numberOfUnderweight);
System.out.println("================");
System.out.println("Total: " + BodyMassIndex.totalNumberOfPeople);


}

public static void createObjectsToFillArray(BodyMassIndex[] data, String name, int age, double weight, double height, int numberOfPeople) {
for (int i = 0; i < numberOfPeople; i++)
data[i] = new BodyMassIndex(name, age, weight, height);



//creates new BodyMassIndex objects with generated variables from methods within
}

public static String loadRandomNames(BodyMassIndex[] data) {

String[] arrayOfFirstNames = {"Joe", "Donna", "Ronald", "Sarah", "David", "Courtney", "Irwin", "Linda", "Michael", "Cindy", "Tom", "Rebekah", "Todd", "Tracy", "Peter", "Nicole", "Marcelo", "Jennifer", "Rick", "Andrea", "Bruce", "Jaclyn", "Doug", "Shirley", "Steve", "Liz", "Waldo", "Theresa", "Scott", "Colby", "Beth", "Larry", "Emily", "Paul", "Kate", "Sam", "Dianne", "Dustin", "Alethea", "Wayne", "Kristina", "Christian", "Danny", "Breya", "Andrew", "Alison", "Tim", "Mary", "Chris", "Susie", "Jeremy", "Willy", "Jessica", "Marcus", "Kelly", "Kyle", "Stephanie", "Isaiah", "Hillary", "Eric", "Julia", "Donald", "Meredith", "Kevin", "Leslie", "Blake", "Angela", "Cliff", "Debbie", "Dylan", "Erin", "Alex", "Monica", "Nathan", "Wendy", "Josh", "Megan", "Adam", "Michelle", "Carey", "Ashley", "Brian", "Jason", "Melanie", "Jim", "Monica", "Jamie", "Rhonda", "Steven", "Perry", "Byron", "Laura", "Harry", "Brooke", "Drew", "Vicki", "Gary", "Anita", "Felipe", "Josie"};
String[] arrayOfLastNames = {"Smith", "Johnson", "Williams", "Jones", "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor", "Washington", "Jefferson", "Lincoln", "Hamilton", "Jackson", "Grant", "Franklin", "McKinley", "Cleveland", "Madison", "Chase", "Nicholson", "Fauver", "Doe", "Southard", "Schmidt", "Hodson", "McDonald", "Stickley", "Miller", "Combs", "Bohus", "Krippner", "Amtower", "Banks", "Wallace", "Bannister", "Dehaven", "Yost", "Still", "Timbrook", "Peters", "Vaught", "Shellhammer", "Andrews", "Krippner", "McAlister", "Wright", "Kensinger", "McClellan", "Ganoe", "Shiley", "Layman", "Gearhart", "Yost", "Kushnir", "Bush", "Lowder", "Connolly", "Lowman", "Terveen", "Staton", "Settle", "Tinsman", "Nichols", "Baker", "Walters", "Dawe", "Renner", "Michaels", "Faircloth", "Looker", "Hastings", "Vaughan", "Anderson", "Zimmerman", "Deere", "Daher", "Lauck", "Stottlemyer", "Clinton", "Obama", "Reagan", "Montgomery", "Pugh", "Gavis", "Clark", "Bowers"};

String first = get(arrayOfFirstNames);
String last = get(arrayOfLastNames);
String name = first + " " + last;

return name;
}

public static String get(String[] array) {
Random generator = new Random();
int rnd = generator.nextInt(array.length);
return array[rnd];
}

public static int loadRandomAges(BodyMassIndex[] data, int numberOfPeople) {
double min = 13;
double max = 99;
int age = 0;
for (int i = 0; i < numberOfPeople; i++)
age = (int) randomInt(min, max);


return age;
}

public static double randomInt(double min, double max) {

double random = (double) ((max - min + 1) * Math.random() + min);
return random;

}

public static double loadRandomWeights(BodyMassIndex[] data) {
double min = 100;
double max = 300;
double weight = randomInt(min, max);
for (int row = 0; row < data.length; row++) {
}
return weight;
}

public static double loadRandomHeights(BodyMassIndex[] data) {
double min = 55;
double max = 80;
double height = randomInt(min, max);
for (int row = 0; row < data.length; row++) {
}
return height;
}

public static void printArray(BodyMassIndex[] data, String name, int age, double weight, double height, double BMI, String status) {
System.out.println(" Name " + "Age " + "Height " + "Weight " + "BMI " + "Status");
for (int i = 0; i < data.length; i++) {

DecimalFormat format = new DecimalFormat();
format.setMinimumFractionDigits(2);
format.setMaximumFractionDigits(2);


System.out.println(name + " " + age + " " + format.format(height) + " " + format.format(weight) + format.format(BMI) + " " + status);
}
}
}

我应该得到随机条目,但我只得到一个。这是输出:

run:
Please enter the number of people:
4
Name Age Height Weight BMI Status
Courtney Anderson 81 79.64 155.0717.19 underweight
Courtney Anderson 81 79.64 155.0717.19 underweight
Courtney Anderson 81 79.64 155.0717.19 underweight
Courtney Anderson 81 79.64 155.0717.19 underweight

Current Population

Obese: 0
Overweight: 0
Normal: 0
Underweight: 1
================
Total: 4

最佳答案

以权重为例,您生成一个随机权重如下:

double weight = loadRandomWeights(a);

然后将其传递给填充数组的代码:

createObjectsToFillArray(BodyMassIndex[] data, String name, int age, double weight, double height, int numberOfPeople) 

然后循环多次:

for (int i = 0; i < numberOfPeople; i++) 
data[i] = new BodyMassIndex(name, age, weight, height);

所以你的问题是循环的每次迭代都使用相同的随机值。您需要在循环内生成一个新的随机值,以便数组中的每个条目都获得不同的值:

for (int i = 0; i < numberOfPeople; i++) {
double weight = loadRandomWeights();
....
data[i] = new BodyMassIndex(name, age, weight, height);
}

显然这同样适用于其他值;您还需要在循环内为它们生成值。

而且您的 printArray 方法中也有同样的错误。它重新打印相同的值,而不是从您创建的对象中读取它。在该方法中,读取 BodyMassIndex 对象的值。

此外,我不认为您的 loadRandomWeights() 方法和其他类似的方法需要 data 参数,因为您既不写入也不读取您传递的数组在:

public static double loadRandomWeights(BodyMassIndex[] data) {
double min = 100;
double max = 300;
double weight = randomInt(min, max);
for (int row = 0; row < data.length; row++) {
}
return weight;
}

这可能只是:

public static double generateRandomWeight() {
double min = 100;
double max = 300;
return randomInt(min, max);
}

关于Java生成随机对象[作业],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9988059/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com