这是我所做的,但我有一些问题:
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();
}
}
所以我的问题是:
答案 0 :(得分:2)
问题1 - 查看您的代码:
for(int i=0; i<5; i++) {
System.out.println("Zeros in each array column: " + nulmas[i]);
}
特别是,看看循环。您期望打印出多少行?
问题2:你可以在目前为止的数组列中保留“最少数量为0”和“出现最少数量为0的列” - 然后在设置{的内循环结束时更新这些变量{1}}。
答案 1 :(得分:1)
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)你可以保留一个索引和一个最小的计数器。 min计数器存储最小零数,索引是找到它的列:
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;
}
}
答案 2 :(得分:1)
你似乎非常接近回答这个问题。在我看来,您已经设置了nul_mas
数组以包含每列中的零数,因此问题变为“nul_mas
的哪个索引具有最小值?”。你可以用两个变量做到这一点 - 一个用于到目前为止看到的最小值,一个用于看到它的索引 - 以及一个循环遍历该数组以依次查看每个元素。 (然后,当你开始工作时,考虑如果有平局会发生什么。)
答案 3 :(得分:1)
尝试:
int leastZeroIndex = 0;
for(int i=0;i<5;i++) {
if (nul_mas[i] < nul_mas[leastZeroIndex])
leastZeroIndex = i;
}
System.out.print(leastZeroIndex);
虽然没有检查是否有多行具有最低的零值。
答案 4 :(得分:0)
在我看来,您需要创建一些新数组,因此为每列创建一个数组,然后将列的数字放在那里。之后,只需迭代表示列的数组数组并计算数字(您可以使用一种方法来执行此操作,即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;
}
}
答案 5 :(得分:0)
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”跳过控制台中的一行