Java 将随机整数迭代到数组中

Java 将随机整数迭代到数组中,java,arrays,Java,Arrays,大家好,我正在尝试通过一个数组进行迭代,并用一个随机值填充每个数组元素。唯一的问题是我得到了奇怪的输出,比如 [I@4b142196 我在网站上找到了这个例子 但当在我的代码中使用它时,它将不起作用。以下是我得到的: package h05GrootsteWaarde; import javax.swing.*; import java.util.*; public class GetallenGenerator extends JPanel { public GetallenGene

大家好,我正在尝试通过一个数组进行迭代,并用一个随机值填充每个数组元素。唯一的问题是我得到了奇怪的输出,比如

[I@4b142196

我在网站上找到了这个例子

但当在我的代码中使用它时,它将不起作用。以下是我得到的:

package h05GrootsteWaarde;
import javax.swing.*;
import java.util.*;

public class GetallenGenerator extends JPanel {
    public GetallenGenerator() {
    }
    int[] val = new int[21];
    Random generator = new Random();    
    public void setRandomValue() {
        for (int i = 0; i < val.length; i++) {
            val[i] = generator.nextInt(201) - 100;
        }    
    }   
    public int[] getRandomValue() {     
        return val;     
    }
}

您正在将
int[]
添加到
JTextArea
中。它显示在内存引用int[]上调用
toString()
的结果

您可能应该将
getRandomValue()
方法修改为如下内容:

public String getRandomValue() {
  return Arrays.toString(val);
}
int[] arr = generator.getRandomValue();
String arrStr = Arrays.toString(arr);
String hoi = arrStr.substring(1, arrStr.length()-1);

您会得到一个奇怪的输出,因为数组的
toString
方法没有显示包含数组单个成员的字符串;相反,对于基元类型
int
的数组,它显示一个从
[I@
开始的奇怪字符串

您应该手动准备字符串,或者调用
Arrays.toString(myArray)
,如下所示:

public String getRandomValue() {
  return Arrays.toString(val);
}
int[] arr = generator.getRandomValue();
String arrStr = Arrays.toString(arr);
String hoi = arrStr.substring(1, arrStr.length()-1);

如果需要生成的值,则需要重写
toString
方法。
在这里,您编写的代码将为您提供内存引用,而不是生成的值。

方法
generator.getRandomValue();
返回一个整数数组。因此,如果您打印它,它将打印数组的
字符串表示形式
,对于数组引用,它类似于
HashCode
。因此,当您尝试用空字符串附加它并将其存储在另一个字符串中时,您将无法获得所需的结果

您可能可以使用is:-

String hoi = " " + Arrays.toString(generator.getRandomValue());
但为什么要将整数数组追加并存储到字符串引用中

如果您想要一些随机值,那么您可能可以使用
ArrayList
并使用
Collections.shuffle
对该列表进行洗牌。如果您想要一个随机值,那么您可以首先获取
值。但这不是获取随机值的非常有效的方法。因为它不够随机。

t他提出的方法是:

public int[] getRandomValue() {
    return val;
}
…不会从数组返回随机值-它返回数组引用本身。您可以看到
[I@4b142196
string,因为这是数组的默认字符串表示形式。(第一部分表示类型;第二部分是哈希代码。)


如果你想从数组中得到一个随机值,你需要在
getRandomValue
中加入一些随机性…

谢谢,这就是问题所在!:)我是Java新手,所以不知道这有这么简单。唯一奇怪的是输出像是带有[]括号的[这里是随机数]。你知道如何删除它吗?(所以只显示数字?@Reshad“不知道这么简单”这并不总是那么容易-只在Java 5中添加了
toString
方法。至于删除方括号,我编辑了答案以向您展示如何操作。@如果您完全正确,我编辑了答案以删除它。@Reshad这很奇怪。这是一个关于ideone.hmm的工作示例,确实奇怪!很好至少现在可以了:)我稍后会尝试修复括号谢谢!将您的答案标记为正确答案;)