У меня нет знаний о ArrayLists в java. Мне нужно решение для следующей проблемы: как сделать массив [] столбцов 2D-матрицы. Входной_файл является:Преобразование 2D-матрицы в stringarray столбцов (java)
VGV В.В. GVVV
ЭТС В.Ф. EVEV
VVV В.В. VVVV
ААВ В.А. GVAD
VDV В.Д. EVVV
АВВ В.В. 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");
}
}
Так что для columnstring в liner
, содержащей по меньшей мере 1 вхождение A-G
R
должен быть напечатан. И для столбца columnstring, содержащего только V
, он должен печатать Q
. Выходные данные должны быть:
R
R
Q
R
R
Q
R
R
Но это не то, что я получаю. Кто-нибудь из вас знает, что я делаю неправильно?
Решено:
я должен был получить null
сек выхода из гильзы с помощью Arrays.fill(liner, "");
Что * сделать * вы получите? –
Что я понимаю: R R R R R R – user1189952