(Scala 2.7.7 :) 我不习惯二维数组。数组是可变的,但我如何指定一个 2d 数组 - 假设大小为 3x4。维度(2D)是固定的,但每个维度的大小应该是可初始化的。我试过这个:
class Field (val rows: Int, val cols: Int, sc: java.util.Scanner) {
var field = new Array [Char](rows)(cols)
for (r <- (1 to rows)) {
val line = sc.nextLine ()
val spl = line.split (" ")
field (r) = spl.map (_.charAt (0))
}
def put (row: Int, col: Int, c: Char) =
todo ()
}
我收到此错误::11:错误:值更新不是 Char 字段 (r) = spl.map (_.charAt (0)) 的成员
如果是 Java,代码会多得多,但我知道该怎么做,所以我说明一下我的意思:
public class Field
{
private char[][] field;
public Field (int rows, int cols, java.util.Scanner sc)
{
field = new char [rows][cols];
for (int r = 0; r < rows; ++r)
{
String line = sc.nextLine ();
String[] spl = line.split (" ");
for (int c = 0; c < cols; ++c)
field [r][c] = spl[c].charAt (0);
}
}
public static void main (String args[])
{
new Field (3, 4, new java.util.Scanner ("fraese.fld"));
}
}
例如, fraese.fld 看起来像这样:
M M M
M . M
我得到了一些步骤
val field = new Array [Array [Char]](rows)
但是我将如何实现'put'?或者有没有更好的方法来实现二维阵列。是的,我可以使用一维数组,并使用
put (y, x, c) = field (y * width + x) = c
但我更喜欢看起来更像二维的符号。