使用数组方法获取可能的逻辑错误

时间:2015-12-10 17:59:05

标签: arrays sorting methods return double

在练习我的方法时,我遇到了这个错误: " [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));
    }
}

1 个答案:

答案 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));
}

请注意如何避免复制。如果您想让用户输入更多数字,您只需要在一个地方更改代码。您可以考虑重构以将其中的任何部分移动到另一个函数。