从数组中挑选一个随机索引总是返回相同的索引?

时间:2018-04-03 03:43:11

标签: javascript arrays indexing

public void moveClosedBrackets(){
    closedBrackets.clear();
    text = "";
    for (int count = 0; count < inputArray.size(); count++){
        text = inputArray.get(count);
        StringBuilder newText = new StringBuilder(text);
        //System.out.println(newText.length());
        for(int count2 = 0; count2 < newText.length(); count2++){
            if(newText.charAt(count2) == '}'){
                newText = newText.deleteCharAt(count2);
                System.out.println(count2);
                inputArray.set(count, newText.toString());
                //inputArray.add(count = count +1, "}");
                closedBrackets.add(count);
            }
        }
    }
}

每次它只返回最后一个字母g,而不是数组中的随机字母。

我做错了什么?

3 个答案:

答案 0 :(得分:3)

  

(quotes.length)

什么是quotes?你想要letters

您正在执行var letter = letter,但letter尚未定义。此外,从阵列中选择随机元素时,请使用Math.floor代替Math.round

&#13;
&#13;
const letters = ["a", "b", "c", "d", "e", "f", "g", "h"];
const letter  = letters[Math.floor(Math.random()*letters.length)];
console.log(letter);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

可能需要修复代码中的一些拼写错误:

var letters = ["a", "b", "c", "d", "e", "f", "g", "h"]
var letter  = letters[Math.round(Math.random()*(letters.length))]

此外,您可能不想使用Math.round,因为它可能导致越界数组访问错误。您应该尝试使用Math.floor

答案 2 :(得分:-2)

修正拼写错误,你应该没问题

var letter = letters[Math.round(Math.random()*(letters.length))]