每行和每列的最小元素
Minimum element on each row and column
这听起来可能很愚蠢,但我无法让它发挥作用。
在读取矩阵有多少行和多少列之后,我试图显示每行的最小元素,然后是每列的最小元素。
我的代码看起来像这样,但有时它会抛出 IndexOutOfBoundsException,有时它只是不显示列的最小值,只显示行的最小值。
有效的行代码是这样的
public static void minRand(int[][] n) {
int[] result = new int[n.length];
int min = 0;
for (int i = 0; i < n.length; i++) {
for (int j = 0; j < n[0].length; j++) {
if (n[i][j] < n[i][min]) {
min = j;
}
result[i] = n[i][min];
}
System.out.println("Minimum on line " + i + " is " + result[i]);
}
}
列的代码不起作用
public static void minCol(int[][] n) {
int[] result = new int[n[0].length];
int min = 0;
for (int i = 0; i < n.length; ++i) {
min = Integer.MAX_VALUE;
for (int j = 1; j < n[i].length; ++j)
if (n[j][i] < min)
min = n[j][i];
System.out.println("Minimum on column no " + i + " is " + min);
}
}
如果我给它 3 行 4 列,控制台会显示:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Principal.minCol(Principal.java:103)
at Principal.afisareMeniu(Principal.java:196)
at Principal.main(Principal.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Minimum on line 0 este 0
Minimum on line 1 este 0
Minimum on line 2 este 0
它是 0,因为我没有初始化矩阵,但每一行的最小值有效。
还有。如果我给它一个方阵,行和列的最小值都有效。
我究竟做错了什么?
// Minimum in Column
public static void colMin(double[][] n){
double[] result = new double[n.length];
double min = 0;
System.out.println("Column min values: ");
for (int i = 0; i < n.length; ++i) {
min = Integer.MAX_VALUE;
for (int j = 1; j < n[i].length; ++j)
if (n[j][i] < min){
min = n[j][i];
result[i] = min;
}
System.out.printf("%.2f ", result[i]);
System.out.println();
}
}
只需将计算出的最小值分配给 result[i],如我的代码中所示。
并显示。
干杯。
这听起来可能很愚蠢,但我无法让它发挥作用。 在读取矩阵有多少行和多少列之后,我试图显示每行的最小元素,然后是每列的最小元素。
我的代码看起来像这样,但有时它会抛出 IndexOutOfBoundsException,有时它只是不显示列的最小值,只显示行的最小值。
有效的行代码是这样的
public static void minRand(int[][] n) {
int[] result = new int[n.length];
int min = 0;
for (int i = 0; i < n.length; i++) {
for (int j = 0; j < n[0].length; j++) {
if (n[i][j] < n[i][min]) {
min = j;
}
result[i] = n[i][min];
}
System.out.println("Minimum on line " + i + " is " + result[i]);
}
}
列的代码不起作用
public static void minCol(int[][] n) {
int[] result = new int[n[0].length];
int min = 0;
for (int i = 0; i < n.length; ++i) {
min = Integer.MAX_VALUE;
for (int j = 1; j < n[i].length; ++j)
if (n[j][i] < min)
min = n[j][i];
System.out.println("Minimum on column no " + i + " is " + min);
}
}
如果我给它 3 行 4 列,控制台会显示:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Principal.minCol(Principal.java:103)
at Principal.afisareMeniu(Principal.java:196)
at Principal.main(Principal.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Minimum on line 0 este 0
Minimum on line 1 este 0
Minimum on line 2 este 0
它是 0,因为我没有初始化矩阵,但每一行的最小值有效。
还有。如果我给它一个方阵,行和列的最小值都有效。 我究竟做错了什么?
// Minimum in Column
public static void colMin(double[][] n){
double[] result = new double[n.length];
double min = 0;
System.out.println("Column min values: ");
for (int i = 0; i < n.length; ++i) {
min = Integer.MAX_VALUE;
for (int j = 1; j < n[i].length; ++j)
if (n[j][i] < min){
min = n[j][i];
result[i] = min;
}
System.out.printf("%.2f ", result[i]);
System.out.println();
}
}
只需将计算出的最小值分配给 result[i],如我的代码中所示。 并显示。
干杯。