如何使用java获取二维数组中的特定列
问题描述:
当数组中存在搜索值时,我选择该列并保存它们。 例如如何使用java获取二维数组中的特定列
1 2 3 4 5 6
A B C D E F
G H I J K L
我想打一列包括x==1||x==4
下面列将是什么,我想
1 4
A D
G J
下面的代码是我的二维阵列码的结果。我从csv文件和2D数组创建一维数组。当搜索值存在时,我选择该列并保存它们。
String str = readCSV(new File("D:/sample_folder/sample1.csv"));
String[] strArr = parse(str); // It comes out in a row in an String array.
int varNumber = 45;
int rowNumber = strArr.length/varNumber;
String[][] Array2D = new String[varNumber][rowNumber];
for(int j=0;j<varNumber;j++)
{
for(int i=0; i<rowNumber;i++)
{
String k = strArr[i*varNumber+j];
Array2D[j][i]= k;
}
} //make 2D array
答
你可以通过二维数组的行并选择你想要的列。
for(int j=0;j<rowNumber;j++)
{
// index starts from 0
yourArray[j][0] = array2D[j][0];
yourArray[j][1] = array2D[j][3];
}
或多个动态,你可以写:
int[] columnsYouWant = {0, 3};
for(int j=0;j<rowNumber;j++)
{
for(int c=0;c<columnsYouWant.length;c++)
{
yourArray[j][c] = array2D[j][columnsYouWant[c]];
}
}
如果你想如果(X == 1 || X == 4)使用方法:
for(int j=0;j<rowNumber;j++)
{
column = 0;
for(int c=0;c<columnNumber;c++)
{
x = c + 1;
if (x == 1 || x == 4)
yourArray[j][column++] = array2D[j][c];
}
}
我可能会它错了。它也似乎你可能想要有1或4开始列。在这种情况下,如果你的第一行有数字,其余是按字母顺序。你会发现开始的列1或4
for(int j=0;j<colNumber;j++)
{
x = array2d[0][j];
if (x == 1 || x == 4) {
// add you j to an array
}
}
在,你会知道你想要的列的情况下,你可以使用第二一段代码在我回答你想要的列上创建二维数组。
+0
我想用'if(x == 1 || x == 4)' – kimHS
答
试试这个模拟,我在你的2DArray填充此:
1 2 3 4 5 6
A B C D E F
G H I J K L
在那之后,我做了一个代码只打印列1
和4
。
public static void main(String[] args) {
String[][] twoDArray = populateArray();
int x = 0;
for (int i = 0; i < twoDArray.length; i++) {
for (int j = 0; j < twoDArray[0].length; j++) {
x = j + 1;
if(x == 1 || x == 4) {
System.out.print(twoDArray[i][j]);
}
}
System.out.println();
}
}
public static String[][] populateArray() {
String[][] twoDArray = new String[3][6];
for (int i = 0; i < twoDArray[0].length; i++) {
twoDArray[0][i] = (i + 1) + "";
}
char alphaChar = 'A';
for (int i = 1; i < twoDArray.length; i++) {
for (int j = 0; j < twoDArray[0].length; j++) {
twoDArray[i][j] = String.valueOf(alphaChar);
alphaChar++;
}
}
return twoDArray;
}
代码的输出是:
14
AD
GJ
,如果你发表意见if(x == 1 || x == 4) {
,我用,它将打印这样的:
123456
ABCDEF
GHIJKL
你有没有尝试在处理这个问题你自己?如果是这样,请将代码粘贴到此处:)如果不尝试自己并在获取错误和研究无效时询问更具体的问题。 – geisterfurz007
你的csv格式是什么?旋转你的数组会很有趣。这样,您就可以通过在一行中复制Array2d [i]来获得列。请举个例子来运行这个 – AxelH