Java:创建随机字符串数组

时间:2014-03-03 10:57:40

标签: java string random arrays

我有一组代码,目前使用由数字组成的30个手动输入字符串的预设列表,如下所示:

    String[] elementsToAdd2 = { "100", "510", "170", "214", "268", "398",
            "235", "802", "900", "723", "699", "1", "16", "999", "890",
            "725", "998", "978", "988", "990", "989", "984", "320", "321",
            "400", "415", "450", "50", "660", "624" };

我想用一些可以产生我想要的任意数量的随机字符串数字的东西替换它,在某个预先设定的大小之间。我想到的是在其位置使用以下代码:

    public class HashFunction {
   .
   .
   .
    private Random r = new Random();
    public String randomString(int limit)
     {
         int n = r.nextInt(limit);
         return n+"";
     }
   .
   .
   .
public static void main(String[] args) {

    HashFunction theFunc = new HashFunction(30); // this is where you can control the number of spaces in the hash table!!!
            String[] elementsToAdd2 = new String[30];

            for (int i = 0; i <= elementsToAdd2.length; i++)
                {
                  String[i] elementsToAdd2 = randomString(1000);   

                }

当我读到这篇文章时,我认为“i”处的数组字符串值将被分配给0到1000之间的随机值。但是,我得到一条错误消息。它说是“;”是预期的,我有不兼容的类型。我认为Java正在读这个说我试图设置一个字符串数组等于单个字符串,即使我在“String [i]”中包含“i”来指定数组中放置值的位置。

如果有人可以帮我理解我的问题,请告诉我。谢谢!

P.S。此代码创建哈希表,以防与我遇到的问题相关。如果您愿意,我可以提供代码,但我想隔离问题并仅显示与其相关的内容。

3 个答案:

答案 0 :(得分:3)

String[i] elementsToAdd2 = randomString(1000);

错了。 String[i]用于定义一个类似于你已经完成的数组,这里是

String[] elementsToAdd2 = new String[30];

但是你试图给它分配一个不是数组的值,因为它应该是一个数组元素。因此,要向数组添加元素,请使用数组名称和索引并将其设置为所需的值

elementsToAdd2[i] = randomString(1000);


<强>另外

数组大小

此代码将导致ArrayOutOfBoundsIndexException,因为您尝试使用

访问数组中大于其长度的元素
i <= elementsToAdd2.length

由于数组length等于它有多少个位置,但这些位置索引从0开始,意味着最后一个元素始终为length-1,请使用

i < elementsToAdd2.length

方法访问(由@Dominic指出)

您正在访问randomString()的方法是static(因为它是您的main方法)但该方法是一个实例变量(与对象关联),您需要访问它通过它所属的对象ie theFunc,就像这样

 theFunc.randomString(1000)

答案 1 :(得分:0)

从循环使用循环变量中删除此String[i] elementsToAdd2 = randomString(1000)语句,其中数组对象不是字符串

for (int i = 0; i <elementsToAdd2.length; i++)
                {
                   elementsToAdd2[i] = randomString(1000);   

                }

答案 2 :(得分:0)

在你的for循环中你说:

for (int i = 0; i <= elementsToAdd2.length; i++)
{
    String[i] elementsToAdd2 = randomString(1000);   
}

这应该是:

for (int i = 0; i <= elementsToAdd2.length; i++)
{
   elementsToAdd2[i] = theFunc.randomString(1000);   
}

您将字符串指定为位置elementsToAdd2的{​​{1}}值,而不是整个数组,这会导致不兼容的类型错误。您还需要调用i实例的randomString方法,而不仅仅是调用方法调用。