MathList的Math.random()出错

时间:2017-06-07 14:40:13

标签: java arraylist random

我确信这是一个我无法看到的小错误。
我在这段代码中遇到了编译错误:

private String setQuestions(){
int match = Math.floor(Math.random()*cities.length); }

在我的长度。

编译错误是:

“找不到符号 符号:可变长度 location:ArrrayList类型的变量城市“

我该如何解决这个问题?我确实想使用Math.random();

也不确定这是否有所不同,但这是在String方法中完成的。

提前致谢!

3 个答案:

答案 0 :(得分:2)

如果cities的类型为ArrayList,则必须使用cities.size()代替cities.length

答案 1 :(得分:1)

这里有一些错误。

首先:如果您的方法不是ResponseEntity<String>是因为您要返回某些内容,那么在您的方法中,您应该void return

第二:String的结果为双倍,因此您无法存储在简单的Math.floor(Math.random()*cities.length)上,您应该解析它或只更改int int }

第三:如果你想要double return变量,你应该将其解析为match,就像你宣布或只是将声明更改为String一样。

因此,更简单的解决方法就是更改double的{​​{1}}和string并按以下方式返回:

int

请记住,如果您想使用返回的double,则应在调用时将其存储,如下所示:

    private static double setQuestions(){

        double match = Math.floor(Math.random()*cities.length);

        return match;
    }

希望它有所帮助!

答案 2 :(得分:0)

代码有三个问题:

首先,变量“cities”是一个ArrayList,正如compiller错误所写。 ArrayList是一个实现接口List的Collection。 List的任何实现的大小都可以通过方法size()访问。或者,您应该通过cities.size()更改cities.length,或者将城市更改为数组。

第二,您将变量“match”定义为int值,但Math中的方法楼层返回double。如果你真的希望“匹配”是一个int,那么你可以对方法底层使用强制转换,也就是代码变为:int match =(int)Math.random()* cities.size();

第三次,您的方法需要String作为返回,而不是正确返回String对象。