簡體   English   中英

將隨機整數迭代到數組中

[英]Iterate random integers into an Array

大家好,我正在嘗試遍歷數組,並用隨機值填充每個Array元素。 唯一的問題是我得到了奇怪的輸出

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

這是我如何調用函數

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

您會得到一個奇怪的輸出,因為數組的toString方法沒有顯示包含數組中各個成員的字符串。 相反,它顯示了一個以[I@開頭的原始類型為int數組的奇怪字符串。

您應該手動准備字符串,或調用Arrays.toString(myArray) ,如下所示:

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

方法generator.getRandomValue(); 返回一個整數數組。 因此,如果您打印它,它將打印您的數組的String Representation ,您會看到它類似於數組引用的HashCode 因此,當您嘗試用空字符串附加它並將其存儲在另一個字符串中時,將不會獲得所需的結果。

您可能使用的是:-

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

但是,為什么要追加然后將整數數組存儲到String引用中呢?

如果您想要一些隨機值,則可以使用ArrayList並在該列表上使用Collections.shuffle對其進行隨機化。 如果您想要一個隨機值,則可以獲取第first值。 但這不是獲得隨機值的非常有效的方法。 因為它不會足夠隨機。

方法:

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

...不會數組中返回隨機值-它會返回數組引用本身。 您會看到[I@4b142196字符串,因為這是數組的默認字符串表示形式。 (第一部分表示類型;第二部分是哈希碼。)

如果要從數組中獲取隨機值,則實際上需要將一些隨機性放入getRandomValue

您正在將int[]添加到JTextArea 它顯示在作為內存引用的int []上調用toString()的結果。

您可能應該將getRandomValue()方法修改為如下形式:

public String getRandomValue() {
  return Arrays.toString(val);
}

如果需要生成的值,則需要重寫toString方法。 在這里,您編寫的代碼將為您提供內存引用,而不是生成的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM