无法分配给数组中的第一个元素

时间:2014-06-05 18:39:09

标签: java arrays assign

出于某种原因,我无法为我创建的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);
          ^

2 个答案:

答案 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

的变化:

  1. 在类级别放置声明(和初始值设定项,虽然我更喜欢构造函数中的初始值设定项)。

  2. 代码放入构造函数中。

  3. 删除最后一种方法中的额外[

  4. 为各种方法返回值和参数添加缺少的类型。

  5. math更改为Math

  6. 结果现在编译。我建议查看与原始版本相比的变化,以便了解各种问题。