我确信这是一个我无法看到的小错误。
我在这段代码中遇到了编译错误:
private String setQuestions(){
int match = Math.floor(Math.random()*cities.length); }
在我的长度。
编译错误是:
“找不到符号 符号:可变长度 location:ArrrayList类型的变量城市“
我该如何解决这个问题?我确实想使用Math.random();
也不确定这是否有所不同,但这是在String方法中完成的。
提前致谢!
答案 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对象。