Java 如何构建具有多个变量的随机对象?

Java 如何构建具有多个变量的随机对象?,java,Java,这是我的主要节目。我在这里试图实现的是为每个“耳机”设置一个随机生成的颜色和制造商。当前,当程序运行时,除了我预先设置的变量外,所有变量都是相同的 包装测试耳机; 导入java.util.Random; 公共级测试耳机{ 公共静态void main(字符串[]args){ String[]制造商={“Skullcandy”、“Klipsch”、“Grado”、“舒尔”, “Bose”、“Beats”、“Sony”}; 字符串[]颜色={“蓝色”、“黑色”、“绿色”、“红色”、“紫色”、“粉色”,

这是我的主要节目。我在这里试图实现的是为每个“耳机”设置一个随机生成的颜色和制造商。当前,当程序运行时,除了我预先设置的变量外,所有变量都是相同的

包装测试耳机;
导入java.util.Random;
公共级测试耳机{
公共静态void main(字符串[]args){
String[]制造商={“Skullcandy”、“Klipsch”、“Grado”、“舒尔”,
“Bose”、“Beats”、“Sony”};
字符串[]颜色={“蓝色”、“黑色”、“绿色”、“红色”、“紫色”、“粉色”,
“白色”、“橙色”、“黄色”};
随机=新随机();
int randColor=random.nextInt(2);
字符串颜色=颜色[randColor];
int randMan=random.nextInt(2);
字符串制造商=制造商[randMan];
//制作三套耳机。
//每个集合都封装在“{}”中,仅用于组织
耳机设置1=新耳机(){
set1.setIsPluggedIn(真);
set1.getManufacturer();
set1.SET制造商(制造商);
set1.getVolume();
set1.setVolume(2);
set1.getColor();
set1.setColor(color);
}
耳机设置2=新耳机(){
set2.setIsPluggedIn(真);
set2.getManufacturer();
set2.SET制造商(制造商);
set2.getVolume();
set2.setVolume(1);
set2.getColor();
set2.setColor(color);
}
耳机设置3=新耳机(){
set3.setIsPluggedIn(真);
set3.getManufacturer();
set3.SET制造商(制造商);
set3.getVolume();
set3.setVolume(3);
set3.getColor();
set3.setColor(color);
}
System.out.println(set1.toString());
System.out.println();
System.out.println(set2.toString());
System.out.println();
System.out.println(set3.toString());
}
}
这是我的班级档案

    package testheadphones;

import java.util.Random;

public class HeadPhones {

//Constant Declarations
public static final int LOW = 1;
public static final int MEDIUM = 2;
public static final int HIGH = 3;

//Private Declarations
private int volume = MEDIUM;
private boolean pluggedIn = false;
private String manufacturer = null;
private String color = null;

Random random = new Random();

//Default Constructor
public void HeadPhones (int volume, String manufacturer, String Color){
    pluggedIn = false;
    manufacturer = "Sony";
    color = "red";
    volume = MEDIUM;
}

//Getter and Setter
public int getVolume(){
    return volume;
}
public void setVolume(int volume){
    this.volume = volume;
}
public String getManufacturer(){
    return manufacturer;
}
public void setManufacturer(String manufacturer){
    this.manufacturer = manufacturer;
}
public boolean getIsPluggedIn(){
    return pluggedIn;
}
public void setIsPluggedIn(boolean pluggedIn){
    this.pluggedIn = pluggedIn;
}
public String getColor(){
    return color;
}
public void setColor(String color){
    this.color = color;
}

public String toString(){
    String plugIn = this.pluggedIn == true ? "plugged in. " : "not plugged"
            + " in. ";

    String earBuds = "Your headphones are " + plugIn + "They are: " + 
            this.color + " " + this.manufacturer + " and are turned up to "
   + this.volume;

    return earBuds;
}

}

我看到的一个可能的错误是
生成0(包括)和指定值之间的随机数,即2(不包括)
即仅生成两个值
1和0
。您需要在多个范围之间生成它

解决这个问题

Random random = new Random();
    int randColor = random.nextInt(manufacturers.length);
    String color = colors[randColor];
    int randMan = random.nextInt(colors.length);

由于问题不清楚,我会尽力了解你想要什么

我假设您希望在整个数组中找到一个随机元素,而不仅仅是前两个元素:
random.nextInt(colors.length)和<代码>随机.nextInt(制造商.长度)而不是
random.nextInt(colors.length)

您创建一个整数,并将其用于3个耳机。你可能想为每一个耳机选择一种新的颜色和一个新的制造商。然后更换
setX.setManufacturer(制造商)
setX.setColor(颜色)带有:

setX.setManufacturer(制造商[随机.nextInt(制造商.长度)]);
setX.setColor(colors[random.nextInt(colors.length)]);
当你说

    int randMan = random.nextInt(2)
您是说Random类生成一个介于0和1(2互斥)之间的随机整数。 您可能想做的是生成一个介于0和0之间的随机数

    manufacturers.length
颜色也是如此。因此,您需要的是:

    int randColor = random.nextInt(colors.length);
    int randMan = random.nextInt(manufacturers.length);
以下是您想要的:

publicstaticvoidmain(字符串[]args){
String[]制造商={“Skullcandy”、“Klipsch”、“Grado”、“舒尔”、“Bose”、“Beats”、“Sony”};
字符串[]颜色={“蓝色”、“黑色”、“绿色”、“红色”、“紫色”、“粉色”、“白色”、“橙色”、“黄色”};
ArrayList=新建ArrayList();
随机=新随机();
对于(int i=0;i<10;i++){
int体积=i+1;
int randManufacturers=random.nextInt(manufacturers.length);
字符串制造商=制造商[randManufacturers];
int randColor=random.nextInt(colors.length);
字符串颜色=颜色[randColor];
耳机耳机=新耳机(音量、制造商、颜色);
列表。添加(耳机);
}
//打印出来
foreach(耳机耳机:列表){
System.out.println(heedphones.toString());
}
}

您只为所有耳机对象创建了一组随机变量值。也许您应该尝试创建一些方法,为您提供适当的随机变量,例如:

public static String randomColor(){
    Random random = new Random();
    String[] colors = {"blue", "black", "green", "red", "purple", "pink",
            "white", "orange", "yellow"};
    int randColor = random.nextInt(colors.length);
    return colors[randColor];
}
然后,您可以调用例如:

headphone.setColor(randomColor());

并且可以方便地在需要的地方重用它。

随机对象可以从随机值中解除绑定。谢谢,我能够在每个setter上实现这一点,并生成一个随机变量。我挣扎了一会儿。我知道我想做什么,只是不知道怎么做。只是一个旁注。这也让我省略了几行代码,这使它变得更清晰了。