[英]Please help with my twodimensional array source code
这是我所做的,但是我有一些问题:
class masivins {
public static void main (String args[]) {
int mas[][] = {{0, 2, 7, 0, 8, 5, 3},
{0, 4, 0, 6, 0, 0, 0},
{0, 0, 0, 0, 3, 0, 0},
{7, 0, 0, 9, 1, 0, 7},
{5, 0, 4, 0, 0, 2, 0}};
int nulmas[] = new int [7];
int nul=0;
for(int j=0; j<7; j++) {
nul=0;
for(int i=0; i<5; i++) {
if(mas[i][j]==0) {
nul++;
}
}
nulmas[j]=nul;
}
for(int i=0; i<5; i++) {
for(int j=0; j<7; j++) {
System.out.println(mas[i][j]);
}
System.out.println();
}
System.out.println();
for(int i=0; i<5; i++) {
System.out.println("Zeros in each array column: " + nulmas[i]);
}
System.out.println();
}
}
所以我的问题是:
问题1-查看您的代码:
for(int i=0; i<5; i++) {
System.out.println("Zeros in each array column: " + nulmas[i]);
}
特别要看一下循环。 您希望它打印几行?
问题2:您可以保持“到目前为止,数组列中的最少0”和“出现最少0的列”-然后在设置nulmas[j]
的内部循环末尾更新这些变量。 。
1)因为您从0循环到4:
for(int i=0; i<5; i++) {
如果循环到7,则将打印所有值:
for(int i=0; i<7; i++) {
System.out.println("Zeros in each array column: " + nulmas[i]);
}
2)您可以保留一个索引和一个最小计数器。 最小计数器存储最小的零个数,该数目为找到该零个数的列的索引:
int nulmas[] = new int [7];
int nul=0;
int minNuls=5;
int minIndex=0;
for(int j=0; j<7; j++) {
nul=0;
for(int i=0; i<5; i++) {
if(mas[i][j]==0) {
nul++;
}
}
nulmas[j]=nul;
if (nul < minNul) {
minNul = nul;
minIndex = j;
}
}
您似乎非常接近回答这个问题。 在我看来,您已将nul_mas
数组设置为在每一列中包含零个数字,因此问题就变成了“ nul_mas
哪个索引值最小?”。 您可以使用两个变量来执行此操作-一个用于到目前为止所看到的最小值,一个用于在其中看到索引的变量-以及循环遍历该数组以依次查看每个元素。 (然后,当它正常工作时,请考虑如果打成平手该怎么办。)
尝试:
int leastZeroIndex = 0;
for(int i=0;i<5;i++) {
if (nul_mas[i] < nul_mas[leastZeroIndex])
leastZeroIndex = i;
}
System.out.print(leastZeroIndex);
尽管不检查是否有多个行的零值最低。
在我看来,好像您需要创建一些新的数组,因此为每个列创建一个数组,然后在其中放置该列的数字。 之后,只需遍历代表列的数组并计数数字(您可以使用一种方法来做到这一点,即int count(int num, int[] arr)
。代码量。
int[][] mas = ...; // (you have this already), it's [NO_OF_ARRS][NO_OF_COLS] with the data
int[][] colsarrs = new int[NO_OF_COLS][NO_OF_ARRS];
for (int i = 0; i < NO_OF_ARRS; i++) {
for (int j = 0; j < NO_OF_COLS; i++) {
colsarrs[j][i] = mas[i][j];
}
}
int[] resultarr = new int[NO_OF_COLS];
for (int i = 0; i < NO_OF_COLS; i++) {
resultarr[i] = count(0, colsarrs[i]);
}
int count(int num, int[] arr) {
int count;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) ++count;
}
return count;
}
将零的数量存储在从此函数为每一列收集的另一个数组(resultarr)中。 此后,遍历数组并找到最低编号,然后获取其索引。 那是您的列中的零值最低。
int lowestcurr = 0;
for (int i = 0; i < NO_OF_COLS; i++) {
if (resultarr[i] < resultarr[lowestcurr]) {
lowestcurr = i;
}
}
for(int i=0; i<5; i++) { System.out.println("Zeros in each array column: " + nulmas[i]); } System.out.println(); place there it
更改:
int minElement = 0;
for(int i=0; i<7; i++) {
if (nulmas[i] < nulmas[minElement]) minElement = i;
System.out.println("Zeros in each array column: " + nulmas[i]);
}
System.out.println(nulmas[minElement]);
最好使用“ \\ n”在控制台中跳过一行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.