[英]Convert 1d array into 2d array using nested for loops
我試圖掃描文件並為每行創建一個1D數組,然后在創建該數組后立即將其復制到2D數組的第一行中。 我已經將代碼僅用於文件的第一行。 它不會移動到下一行。 它遍歷整個2d數組時復制同一條線。 我知道發生這種情況是因為掃描下一行的計數器在到達2d數組的末尾之前不會增加。 如何增加計數器以掃描下一行? 這是我的代碼:(tempString是此循環之前已經創建的一維數組)
for(int i = 0; i < 7; i++){
tempString = scnr.nextLine().split(" ");
//add lines to 2d array
for(int r = 0; r < 7; r++){
int x = 0; //moves along each element in tempString
for(int c = 0; c < tempString.length; c++){
temp[r][c] = Double.parseDouble(tempString[x]);
x++;
}
}
}
您有3個循環,但只需要兩個循環。 從文件讀取的每個輸入行將成為二維數組的一行:
for(int r = 0; r < 7; r++){
tempString = scnr.nextLine().split(" ");
temp[r] = new double[tempString.length];
for(int c = 0; c < tempString.length; c++){
temp[r][c] = Double.parseDouble(tempString[c]);
}
}
我不確定您到底需要什么。 但是我從這個問題得出的結論是,您有一個文件,需要將其拆分為2D數組,其中各列應在每一行中包含各個項目,而每一行應在新行中。
我的建議是使用ArrayList
,它將為您處理動態長度。
請參見以下示例:
說我有一個文件'text.txt',其中包含一些數據,例如
abc def ghi
jhl mnop qrs uv
wx yz
然后是一個程序,該程序形成一個2D數組,第一維包含每一行,第二維包含來自每一行的標記。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class Split {
public static void main(String args[]){
ArrayList<ArrayList<String>> columns = new ArrayList<ArrayList<String>>();
columns.add(new ArrayList<String>());//Col 1
columns.add(new ArrayList<String>());//Col 2
columns.add(new ArrayList<String>());//Col 3
BufferedReader br = null;
try
{
br = new BufferedReader(new FileReader("src\\text.txt"));
String sCurrentLine;
int j=0;
while ((sCurrentLine = br.readLine()) != null) {
String sLine[] = sCurrentLine .split(" ");
for(int i = 0; i < sLine.length; i++)
{
columns.get(j).add(sLine[i]);
}
j++;
}
for(ArrayList<String> line:columns){
for(String tokens:line)
System.out.println(tokens);
System.out.println();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
如果這不是您所需要的,請嘗試通過示例進一步闡述您的問題。
請注意,我使用空格(“”)分割令牌,您可以將其替換為使用的任何內容。
希望對您有所幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.