输入4个数字时,如何将3个最高数字相加

时间:2017-10-18 04:26:04

标签: java

我还在学习如何使用java,我想知道当用户输入4个数字时是否有办法添加3个最高数字?

对于Ex。用户输入5 6 7 6,他们将添加6 7 6,这将是19。

我得到的唯一想法是使用if else语句?但我觉得这在我的代码中效率不高。

先谢谢

5 个答案:

答案 0 :(得分:2)

假设一个int数组并且只输入4个数字,那么实际上可以将问题重新描述为获取除去数组中最小元素的总和。并不是说这个大小很重要,排序会产生O(nlogn)成本。相反,只需在一个循环中通过找到min并在最后删除它来线性地进行。

int[] nums = { 5, 6, 7, 6 };
int min = Integer.MAX_VALUE;
int sum = 0;

for (int num : nums) {
    if (num < min) {
        min = num;
    }
    sum += num;
}

sum -= min;

System.out.println(sum);

答案 1 :(得分:0)

使用Array.sort

    int arr[] = {5,6,7,6};
    Arrays.sort(arr);
    int total = 0;
    for (int i = 3; i > 0; i--) // what a fool, it was the wrong way around
        total += arr[i];

    System.out.println(total);

或者你可以使用

    Integer arr[] = {5,10, 10, 10};
    Arrays.sort(arr, Collections.reverseOrder());

并且通常从0到3循环

答案 2 :(得分:0)

我建议您首先创建一个集合然后排序。 如果你排序和求和,测试用例如

9,5,9,7,6,2将失败,因为数组中的最大数字是9,5,7,并且在排序之后,前三个指数只会得到9,9,9

创建一个集合(不重复)

阵列将是9,5,7,6,2 然后你可以对它进行排序并总结前三个。

答案 3 :(得分:0)

将它们存储在数组中。 对数组进行排序。 总结最后3个元素i,e

int[] arr={7,8,5,2,1,4,5};
Arrays.sort(arr);
int sum = 0;
        for(int i=arr.length-1;i>=arr.length-3;i--) {
            sum += arr[i];
        }
        System.out.println(sum);

答案 4 :(得分:-1)

搜索排序算法,然后对数字进行排序并添加前3个数字