如何从Java中的三个输入中获取中间数?

时间:2017-02-10 11:08:56

标签: java arrays command-line-arguments class-method

例如,如果用户要输入命令行参数:

java program 9 1 3.3

我会使用什么公式将程序整理并打印出来: 3.3介于1到9之间

我需要三个公式,但具体是什么?

2 个答案:

答案 0 :(得分:0)

它试图用最少的代码对args进行排序,并且它可以工作:

public static void main(String[] args) {
    Arrays.sort(args);
    for (int i = 0; i < args.length; i++) {
        System.out.println(args[i]);
    }
}

打印输出很容易

答案 1 :(得分:0)

您可以将3个参数args转换为数字数组并对其进行排序。

public static void main(String[] args) {
    double[] numbers = new double[3];
    for (int i = 0; i < 3; i++) {
        numbers[i] = Double.parseDouble(args[i]);
    }
    Arrays.sort(numbers);
    ...
}

此解决方案与Jack Flamp提供的解决方案之间的主要区别在于排序顺序:排序数字应使用数字顺序而不是字典顺序(字母顺序)。

UPDATE :但是,当String转换为double时,我们会丢失其确切的表示形式:11.01.00在字符串中有所不同,但是所有相同的双倍。为了防止出现这种情况,您只能进行排序转换:

public static void main(String[] args) {
    Arrays.sort(args, new Comparator<String>() {
        @Override
        public int compare(String s1, String s2) {
            double d1 = Double.parseDouble(s1);
            double d2 = Double.parseDouble(s2);
            return Double.compare(d1, d2);
        }
    });
    ...
}