[英]Initializing Multidimensional Arrays in Java
我有一个3维数组:
int[][][] env;
我想使用文本文件中的数据进行初始化。 文本文件中的数据如下所示:
{ { { 0, 1,-1},
{ 0, 2,-1},
{-1,-1,-2},
{ 0, 0, 0} },
{ { 0, 0,-1},
{ 0, 0,-1},
{-1,-1,-2},
{ 0, 0, 0} }
}
实际上,如果需要,可以将这些赞誉删除并替换为其他字符。 如果有更好的方法来格式化文本文件中的值,则欢迎使用。
我正在寻找用文本文件中的值初始化Java程序中数组的最佳方法。
此代码编译:
int[][][] env =
{ { { 0, 1,-1},
{ 0, 2,-1},
{-1,-1,-2},
{ 0, 0, 0} },
{ { 0, 0,-1},
{ 0, 0,-1},
{-1,-1,-2},
{ 0, 0, 0} }
}
;
您还想要更多吗???
如果您要的是Java,则没有#include
。 如果您实际上需要在运行时读取文件的内容,那么这是与I / O和解析相关的问题,而不是真正关于多维数组的问题。
好玩!
下面的Perl程序将数据转换为更易消化的格式,其中每条输出行都是数组索引,后跟一个整数值。 该程序使用连续的正则表达式(“ \\ G”和“ c”标志)从上次匹配结束的地方开始提取。 摆弄一个数组切片来处理外部的“ {...}”有点儿麻烦。
#!perl -w
my $content = do {local $/=undef; <>};
my @stack = ();
my $count = 0;
while (1) {
if ($content =~ m/\G\s*\{/cgms) {
push @stack, $count;
$count = 0;
} elsif ($content =~ m/\G\s*\}\s*,?/cgms) {
$count = pop @stack;
$count++;
} elsif ($content =~ m/\G\s*(-?\d+)\s*,?/cgms) {
print "@stack[1 .. $#stack] $count $1\n";
$count++;
} elsif ($content =~ m/\G\s*\z/cgms) {
last;
} else {
my ($err) = $content =~ m/\G\s*(.{1,20})/cgms;
die "Syntax error: $err\n";
}
}
这是您的数据集的示例输出:
0 0 0 0
0 0 1 1
0 0 2 -1
0 1 0 0
0 1 1 2
0 1 2 -1
0 2 0 -1
0 2 1 -1
0 2 2 -2
0 3 0 0
0 3 1 0
0 3 2 0
1 0 0 0
1 0 1 0
1 0 2 -1
1 1 0 0
1 1 1 0
1 1 2 -1
1 2 0 -1
1 2 1 -1
1 2 2 -2
1 3 0 0
1 3 1 0
1 3 2 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.