這段代碼從純文本文件讀入每一行(每一行都有一個整數數組的「列表」),並且基本上將它分解爲單個整數,它們是存儲在臨時陣列中。文檔的每一行必須排列成具有相同行數和列數的二維數組。Java「break」似乎破壞了兩個嵌套for循環
使用「if」語句測試條件的代碼行應該只打破inner for循環,然後返回到外部循環,遞增i並移至該行中的下一個數組。
到目前爲止,我所擁有的代碼只會在每行中取第一個數組,將其放入2D數組的第一行,但會跳過該行中的所有其他數組,然後移至下一行,它在哪裏做同樣的事情。所以內循環只進行一次,但外循環不會增加。我讀過的每篇文章都說,嵌套for循環中的「break」只會退出內部循環。在這種情況下似乎並非如此。
那麼我怎樣才能確保外循環增量和行中的所有數組都佔了?
if (!thisLine.equals("*")) {
String [] firstSplit = thisLine.split(" ");
String [] secondSplit = new String [firstSplit.length * firstSplit.length];
int [][] numbers = new int [firstSplit.length][firstSplit.length];
int value = 0;
int count = 0;
for (int i = 0; i < firstSplit.length; i++) {
firstSplit[i] = firstSplit[i].replace("[", "").replace("]", "");
secondSplit = firstSplit[i].split(",");
for (int j = 0; j < secondSplit.length; j++) {
value = Integer.parseInt(secondSplit[j]);
if (count >= firstSplit.length) {
break;
}
numbers[i][count] = value;
count++;
System.out.println(value);
}
}
System.out.println(Arrays.deepToString(numbers));
}
例如:有文件中的行讀取: [6,10,15,13] [16,2,14,7] [11,8,9,3] [5 ,4,1,12]
'firstSplit'會以空格分隔該行,從而生成一個長度爲4的數組。 然後括號將被刪除。 對於firstSplit中的每個項目,secondSplit會以逗號分隔它,從而生成長度爲16(個別整數)的數組。 secondSplit中的每個項目都會轉換爲一個整數並放置在如下數組中: 6 at [0] [0],10 at [0] [1],15 at [0] [2],13 at [ 0] [3]。
下一個數組[16,2,14,7]完全被忽略。
這是一個很好的發現:) – 2016-05-16 17:07:55
這是一個非常簡單的解決方案,我不會找到!我是新來的Java,因爲它是。謝謝。 – galaxyphoenix67
@ galaxyphoenix67很高興幫助。我在帖子中增加了一些建議,以便讓代碼更清晰並且不太可能中斷(假設我正確理解了你的意圖,如果不正確,那麼就忽略它):D)。 – resueman