我對Java中的ArrayLists沒有太多的知識。我需要針對以下問題的解決方案:如何製作2D矩陣的列的數組[]。所述inputfile中是:將二維矩陣轉換爲字符串列(java)
VGV VV GVVV
EFV VF EVEV
VVV VV VVVV
AAV VA GVAD
VDV VD EVVV
AVV VV VVAV
和用於字符串數組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個occurence的A-G
一個R
具有要被打印的columnstring。而對於僅包含V
的列串,它必須打印Q
。輸出然後應該是:
R
R
Q
R
R
Q
R
R
但這不是我得到的。你們中有人知道我做錯了什麼嗎?
解決:
我不得不用Arrays.fill(liner, "");
什麼* *你怎麼辦? – 2013-03-10 22:05:07
我得到的是:R R R R R R – user1189952 2013-03-10 23:02:09