出于某种原因,我无法为我创建的int数组中的第一个元素分配一个随机数。问题发生在第7行:coord[0] = (int) (math.random() * numRows + 1);
我在下面发布了错误。
public class Ship {
int shipLength = 3;
int numRows = 5;
int[] coord = new int[shipLength];
coord[0] = (int) (math.random() * numRows + 1);
for (int i=1;i<shipLength;i++){
coord[i] = coord[i-1] + 1;
}
public setCoord(cell){
coord[cell] = null;
}
public int[] getCoord(cell){
return coord[[cell];
}
} //class
C:\java\Battleship>javac Ship.java
Ship.java:7: ']' expected
coord[0] = (int) (math.random() * numRows + 1);
^
Ship.java:7: ';' expected
coord[0] = (int) (math.random() * numRows + 1);
^
Ship.java:7: illegal start of type
coord[0] = (int) (math.random() * numRows + 1);
^
Ship.java:7: <identifier> expected
coord[0] = (int) (math.random() * numRows + 1);
^
答案 0 :(得分:3)
您编码失败的特定行是一行有效的代码,但它必须位于您的类的方法或构造函数中。
例如:
public class Ship {
int shipLength = 3;
int numRows = 5;
int[] coord = new int[shipLength];
public Ship() {
coord[0] = (int) (Math.random() * numRows + 1);
for (int i=1;i<shipLength;i++){
coord[i] = coord[i-1] + 1;
}
}
public void setCoord(int cell, int value){
coord[cell] = value;
}
public int getCoord(int cell){
return coord[cell];
}
}
答案 1 :(得分:1)
public class Ship {
之后和public setCoord(cell){
之前的代码都在类级别,但它是必须在构造函数,方法或实例初始化程序中的逐步代码。 / p>
还有其他一些基本错误。
也许:
public class Ship {
int shipLength = 3;
int numRows = 5;
int[] coord;
public Ship() {
coord = new int[shipLength];
coord[0] = (int) (Math.random() * numRows + 1);
for (int i=1;i<shipLength;i++){
coord[i] = coord[i-1] + 1;
}
}
public void setCoord(int cell){
coord[cell] = 0;
}
public int getCoord(int cell){
return coord[cell];
}
} //class
的变化:
在类级别放置声明(和初始值设定项,虽然我更喜欢构造函数中的初始值设定项)。
将代码放入构造函数中。
删除最后一种方法中的额外[
。
为各种方法返回值和参数添加缺少的类型。
将math
更改为Math
。
结果现在编译。我建议查看与原始版本相比的变化,以便了解各种问题。