我对java中的ArrayLists了解不多。我需要解决以下问题:如何制作二维矩阵列的数组[]。输入文件是:
VGV VV GVVV
EFV VF EVEV
VVV VV VVVV
AAV VA GVAD
VDV VD EVVV
AVV VV VVAV
Stringarray 所需的格式liner
(见下文)是:
{"VEVAVA","GFVADV","VVVVVV","VVVFVVVAVDVV","GEVGEV","VVVVVV","VEVAVA","VVVDVV"}
我的代码是:
ArrayList<String[]> mat = new ArrayList<String[]>();
Scanner scan = new Scanner(new File("internal2"));
String[] liner = new String[m];
while (scan.hasNextLine()) {
Scanner colReader2 = new Scanner(scan.nextLine());
while(colReader2.hasNext())
{
for(int i = 0; i<m; i++) {
liner[i] = colReader2.next();
//System.out.println(liner[i]);
mat.add(liner);
}
}
// scan.nextLine();
}
这样做的目的是我想在liner
. 现在程序似乎只给出liner
这样的: {"A","V","V","VV","V","V","A","V"} 这是最后一行输入文件。我希望你能帮助我。
编辑
我的代码继续:
Pattern pattern = Pattern.compile("[A-G]+");
Pattern pattern2 = Pattern.compile("[V]+");
String[][] matrix4 = mat.toArray(new String[n][m]);
for (int i = 0; i < m; i++) {
StringBuffer sf = new StringBuffer();
for (int j = 0; j < n; j++) {
sf.append(matrix4[j][i]);
}
Matcher matcher = pattern.matcher(sf.toString());
Matcher matcher2 = pattern2.matcher(sf.toString());
if (matcher.find()) {
System.out.println("R");
} else if (matcher2.matches()) {
System.out.println("Q");
}
}
因此,对于liner
包含至少 1次A-G
出现的列字符串,R
必须打印。对于仅包含V
's 的列字符串,它必须打印Q
。那么输出应该是:
R
R
Q
R
R
Q
R
R
但这不是我得到的。你们有谁知道我做错了什么?
解决了:
我不得不null
通过使用 s 从衬垫中取出Arrays.fill(liner, "");