在练习我的方法时,我遇到了这个错误: " [d @ 33909752"
我想让代码尽可能简单,所以我还有另外一个问题,而不是如何解决这个错误:我能以某种方式将Scanner和输入变量放在displaySortedNumbers
方法中吗?可能最终我只想做类似的事情:
System.out.print(displaySortedNumbers(a, b, c));
让它们已经分类。
import java.util.Arrays;
import java.util.Scanner;
public class NumSorter {
public static double[] displaySortedNumbers(double num1, double num2, double num3) {
double[] numbers = {num1, num2, num3};
Arrays.sort(numbers);
return numbers;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter 3 numbers to be sorted in assending order: ");
double a = in.nextDouble();
double b = in.nextDouble();
double c = in.nextDouble();
System.out.print(displaySortedNumbers(a, b, c));
}
}
答案 0 :(得分:0)
如果您打印一个数组,您将获得该数组的引用,该引用可能看起来像"D@33909752"
。这是预期的而不是错误。您可能想要打印数组的元素。在这种情况下,改变你的最后一行:
double[] result = displaySortedNumbers(a, b, c);
System.out.print(Arrays.toString(result));
关于您的其他问题,通过直接写入数组而不是a,b,c,您的代码可能会非常简单。 E.g。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double[] numbers = new double[3];
System.out.print("Enter " + numbers.length + " numbers to be sorted in assending order: ");
for (int i = 0; i < numbers.length; i++) {
numbers[i] = in.nextDouble();
}
Arrays.sort(numbers);
System.out.print(Arrays.toString(numbers));
}
请注意如何避免复制。如果您想让用户输入更多数字,您只需要在一个地方更改代码。您可以考虑重构以将其中的任何部分移动到另一个函数。