簡體   English   中英

用Java初始化多維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM