私はJavaのArrayListsについてあまり知識がありません。次の問題の解決策が必要です。2D行列の列のarray[]を作成する方法。入力ファイルは次のとおりです。
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, "");