Java:使用私有字段的对象访问

时间:2016-03-28 22:46:50

标签: java arrays oop

这是我的两个班级。 Eclipse,在while循环中强调myGrid [0],我得到一条消息“表达式的类型必须是数组类型,但它解析为Grid ”。感谢任何帮助。

import java.util.Scanner;

public class Play {

  private Scanner input = new Scanner(System.in);

  private void setPosition (Grid myGrid) {
    boolean counter = false;

    while (counter == false) {
      System.out.println("Give a position, from 0 to " + myGrid[0].length-1 + " : >");
      x = Integer.parseInt(input.nextLine());
    }
  }
}
$node->field_referee_status[LANGUAGE_NONE][0]['value'] = 'pending';
$node->field_referee_status[LANGUAGE_NONE][1]['value'] = 'declined';

1 个答案:

答案 0 :(得分:1)

您将Grid类与其myGrid字段混淆。它们完全不同。仅仅因为您为Grid参数指定了与其字段相同的名称,它就不是同一个东西。 myGrid是一个纯粹而简单的Grid变量,而不是数组。

下面:

private void setPosition (Grid myGrid) {

myGrid是一个Grid变量,不是一个数组,不能这样对待。如果这是我的代码,我会给Grid类一个getColumnCount()方法

public class Grid {
    private int[][] myGrid;
    private int x, y;

    public Grid(int x, int y) {
        myGrid = new int[y][x];
    }

    public int getRowCount() {
        return myGrid.length;
    }

    public int getColumnCount() {
        return myGrid[0].length;
    }
}

并称之为:

private void setPosition (Grid myGrid) {
    boolean counter = false;

    while (!counter) {
        System.out.println("Give a position, from 0 to " + (myGrid.getColumnCount() - 1) + " : >");
        x = Integer.parseInt(input.nextLine());
    }
}