当搜索值存在于数组中时,我选择该列并保存它们。 例如
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
下面的代码是我的2D数组代码。我从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
答案 0 :(得分:1)
您可以通过2D数组行并选择所需的列。
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]];
}
}
如果你想使用if(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
}
}
如果你知道你想要哪些列,你可以在我的答案中使用第二段代码来创建你想要的列的2D数组。
答案 1 :(得分:0)
尝试此模拟,我在2DArray中填充此内容:
<FIRInstanceID/WARNING> Failed to fetch default token Error Domain=com.firebase.iid Code=501 "(null)" UserInfo={msg=Missing device credentials. Retry later.}
<FIRInstanceID/WARNING> Failed to retrieve the default GCM token after 5 retries
之后,我制作了一个代码,仅打印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) {