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