我在解决任务的最后一部分时遇到了麻烦。我获得了数组中最小的数字,但当我将其移动到另一种方法时,我在打印中得到了这个数字:
[[D@2a139a55
如果我在main(String[] args) {
中写这个,我得到0是正确的。
public class Task05 {
public static void main(String[] args) {
double[][] numbers = getArray();
System.out.println("Smallest number in array is " + numbers);
}
public static double[][] getArray() {
double[][] numbers = new double[25][25];
double smallest = Integer.MAX_VALUE;
for (int row = 0; row < numbers.length; row++) {
for (int column = 0; column < numbers[row].length; column++) {
if (smallest > numbers[row][column]) {
smallest = numbers[row][column];
}
}
}
return numbers;
}
}
答案 0 :(得分:1)
您需要将数组传递给方法。现在,您正在getArray()
方法中创建一个没有任何内容的新数组!
您必须了解的是,即使您的方法是Static
,您的数组也不是!这意味着您需要将数组作为参数传递给方法。
此外,您获得该输出的原因是您将数组传递给print语句,而不是调用getArray()方法(此时也会返回地址)。
在getArray()
方法中,您实际上不需要或者真的想要创建第二个数组。以这种方式思考;如果您的阵列是1,000,000个元素怎么办?你真的想分配另外的1,000,000个元素来找到最小的元素吗?没有!这是对系统资源的极高定价。我们将遍历已经创建的数组!
根据我上面提到的问题,您需要返回找到的最小数字,而不是数组的地址!这意味着您需要将退货类型更改为double
和return smallest
public class Task05 {
public static void main(String[] args) {
double[][] numbers = getArray();
System.out.println("Smallest number in array is " + getArray(numbers));
}
// Changed return type to double, instead of double[][]
public static double getArray(double [][] numbers) {
double smallest = Integer.MAX_VALUE;
for (int row = 0; row < numbers.length; row++) {
for (int column = 0; column < numbers[row].length; column++) {
if (smallest > numbers[row][column]) {
smallest = numbers[row][column];
}
}
}
// Return the smallest number that you found
return smallest;
}
}
答案 1 :(得分:0)
public class JavaApplication8 {
public static void main(String[] args) {
// create and initialize array
int[][] x = {{1, 2, 0}, {4, 5, 6}};
// call smallest method and print the value returned
System.out.println("smallest is " + smallest(x));
}
// smallest method
// to find small element in array
public static int smallest(int[][] x) {
// suppose the first element is the small one
int smallest = x[0][0];
// iterate throgh array
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < x[i].length; j++) {
// compare current element with smallest element
// if current element is the small one then save it in smallest variable
if (x[i][j] < smallest) {
smallest = x[i][j];
}
}
}
// return smallest
return smallest;
}
}