gpt4 book ai didi

java - 将 2D 数组转换为列字符串的 1D 数组

转载 作者:行者123 更新时间:2023-12-02 07:13:14 30 4
gpt4 key购买 nike

我正在开发一个具有以下输入的 java 程序:

A V V V VV V V V
E F V E VF E V E
C D V C VD B V C
A A V A VA G V A
V D V V VD E V V
A V V A VV V V A

以及以下输出:

R
R

R
R
R

R

所以R如果一列包含最少一个字母 A-G 则必须打印,但如果只有 V 则必须打印一个空格就在专栏里。我的代码是:

Scanner inputc2 = new Scanner (new File("internalc"));
int sss = 0;

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
try{
matrix2[i][j] = inputc2.useDelimiter(" ").next().replaceAll(",", " ");
System.out.println(matrix2[i][j]);
temp2[sss] = matrix2[i][j];//change this

if(temp2[sss].indexOf("N") >= 0){
pc2.println(temp2[sss].replaceAll("N","R"));
}
if(temp2[sss].indexOf(' ') >= 0){
pc2.println(temp2[sss]);
}
sss++;

}
catch (java.util.NoSuchElementException e) {
// e.printStackTrace();
}
}

}

在当前程序中,temp2[sss]与matrix2[i][j]完全相同,但它必须是列字符串。我希望你能帮助我。

亲切的问候,比约恩

最佳答案

这是我编写的一个示例程序来完成,输出可能不完全符合您的预期,请根据您的需要调整正则表达式

public static void main(String[] args) throws Exception {

Pattern pattern = Pattern.compile("[A-G]+[A-G]{0,1}");
Pattern pattern2 = Pattern.compile("[V]+[V]*");

BufferedReader br = new BufferedReader(new FileReader(new File("test.txt")));
String line;
while ((line = br.readLine()) != null) {
StringBuffer sf = new StringBuffer();

//System.out.println(line);
String[] tempArr = line.split(" ");
//System.out.println(tempArr.length);

for(String s : tempArr){
Matcher matcher = pattern.matcher(s);
Matcher matcher2 = pattern2.matcher(s);
if (matcher.find()) {
sf.append("R");
}else if(matcher2.find()) {
sf.append(" ");
}
}
System.out.println(sf);
}
br.close();
}

编辑2

给你

public static void main(String[] args) throws Exception {

Pattern pattern = Pattern.compile("[A-G]+");
Pattern pattern2 = Pattern.compile("[V]+");

List<String[]> mat = new ArrayList<String[]>();
String[] row1 = { "A", "V", "V", "V", "VV", "V", "V", "V" };
String[] row2 = { "E", "F", "V", "E", "VF", "E", "V", "E", };
String[] row3 = { "C", "D", "V", "C", "VD", "B", "V", "C" };
String[] row4 = { "A", "A", "V", "A", "VA", "G", "V", "A" };
String[] row5 = { "V", "D", "V", "V", "VD", "E", "V", "V" };
String[] row6 = { "A", "V", "V", "A", "VV", "V", "V", "A" };

mat.add(row1);
mat.add(row2);
mat.add(row3);
mat.add(row4);
mat.add(row5);
mat.add(row6);

int rowSize = 6;
int colSize = 8;

String[][] matrix = mat.toArray(new String[rowSize][colSize]);

for (int i = 0; i < colSize; i++) {

StringBuffer sf = new StringBuffer();
for (int j = 0; j < rowSize; j++) {
sf.append(matrix[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(" ");
}

}

}

结果:

R
R

R
R
R

R

关于java - 将 2D 数组转换为列字符串的 1D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15248301/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com