2

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

[我@4b142196

我在Array Example上找到的示例

但是在我的代码中使用它时它不起作用。这是我得到的:

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;     
    }
}

这就是我调用函数的方式

package h05GrootsteWaarde;
import javax.swing.*;
import java.awt.event.*;
public class Bediening extends JPanel implements ActionListener {
    GetallenGenerator generator;
    private JButton bereken;
    private JTextArea veld;

    public Bediening(GetallenGenerator generator) {     
        this.generator = generator;     
        bereken = new JButton("Bereken kleinste");
        bereken.addActionListener(this);
        add(bereken);       
        veld = new JTextArea(13, 40);
        veld.setEditable(false);
        veld.setWrapStyleWord(true);
        veld.setLineWrap(true);
        add(veld);      
        generator.setRandomValue();
    }   
    public void actionPerformed ( ActionEvent e ) {     
        String hoi = " " + generator.getRandomValue();
        veld.append(hoi);       
    }
}
4

5 回答 5

3

你会得到一个奇怪的输出,因为数组的toString方法没有显示包含数组各个成员的字符串;相反,它显示了一个[I@以原始类型数组开头的奇怪字符串int

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

int[] arr = generator.getRandomValue();
String arrStr = Arrays.toString(arr);
String hoi = arrStr.substring(1, arrStr.length()-1);
于 2012-10-19T13:47:48.573 回答
2

该方法generator.getRandomValue();返回一个整数数组。所以,如果你打印它,它会打印String Representation你的数组,你看到它就像HashCode数组引用的 a 。因此,当您尝试将其附加一个空字符串并将其存储在另一个字符串中时,您将无法获得所需的结果。

您可能使用的是:-

String hoi = " " + Arrays.toString(generator.getRandomValue());

但是为什么要附加然后将整数数组存储到 String 引用中呢?

如果您想要一些随机值,那么您可能可以在该列表上使用ArrayList和使用来随机播放它。Collections.shuffle如果您想要一个随机值,那么您可以获取该first值。但这不是获得随机值的非常有效的方法。因为它不够随机。

于 2012-10-19T13:48:01.190 回答
2

方法:

public int[] getRandomValue() {
    return val;
}

... 不会数组中返回随机值 - 它返回数组引用本身。您看到的是[I@4b142196字符串,因为这是数组的默认字符串表示形式。(第一部分表示类型;第二部分是哈希码。)

如果你想从数组中获取一个随机值,你实际上需要将一些随机性放入getRandomValue...

于 2012-10-19T13:48:02.297 回答
0

您正在向int[]您的JTextArea. 它显示调用toString()int[] 的结果,这是内存引用。

您可能应该将您的getRandomValue()方法修改为如下所示:

public String getRandomValue() {
  return Arrays.toString(val);
}
于 2012-10-19T13:46:55.907 回答
0

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

于 2012-10-19T13:47:52.507 回答