为了账号安全,请及时绑定邮箱和手机立即绑定

对数组中大于输入值的数字求和

对数组中大于输入值的数字求和

三国纷争 2023-12-13 16:24:18
需要将数组中大于输入数字的所有数字相加。种子只是为了可以复制输出。例子:[12,16,45,3,32]输入值:30输出:77import java.util.*;    public class SumAbove {        public static void main(String[] args) {            Scanner scnr = new Scanner(System.in);            int seed = scnr.nextInt();            Random rand = new Random(seed);            System.out.println("Enter a positive integer between 1-100 to search above:");            int minVal = scnr.nextInt();            int[] arr = new int[rand.nextInt(100)+1];            for (int i=0; i<arr.length; i++) {                arr[i] = rand.nextInt(100)+1;            }            System.out.println(Arrays.toString(arr));             int sum = 0;             for (int i=0; i<arr.length; i++) {             if (arr[i]>minVal) {                    sum += i;                }             }            System.out.println(sum);        }    }
查看完整描述

4 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

sum += i;您sum += arr[i];也只需要一个循环(因为您知道第一个循环之前的最小值),而不是您想要的(如前所述)。喜欢,


int minVal = scnr.nextInt(), sum = 0;

int[] arr = new int[rand.nextInt(100) + 1];

for (int i = 0; i < arr.length; i++) {

    arr[i] = rand.nextInt(100) + 1;

    if (arr[i] > minVal) {

        sum += arr[i];

    }

}

System.out.println(Arrays.toString(arr));

System.out.println(sum);


查看完整回答
反对 回复 2023-12-13
?
长风秋雁

TA贡献1757条经验 获得超7个赞

sum += i用。。。来代替sum += arr[i]

变量i只是位置。arr[i]是该位置的值。


查看完整回答
反对 回复 2023-12-13
?
繁花如伊

TA贡献2012条经验 获得超12个赞

public static void main(String[] args) {


    int nums[] = { 12, 16, 45, 3, 32 };

    int value;

    int sum = 0;


    System.out.println("Enter a positive integer between 1-100 to search above: ");

    Scanner sc = new Scanner(System.in);

    value = sc.nextInt();


    for (int i = 0; i < nums.length; i++) {

        if (nums[i] > value)

            sum = nums[i] + sum;

    }

    System.out.println(sum);

}


查看完整回答
反对 回复 2023-12-13
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

以下是如何在 Java 8+ 中使用流来实现这一点。


      int nValues = 5;

      int minValue = 1;

      int maxValue = 30;

      Random r = new Random();

      for (int i = 0; i < 10; i++) {

         int[] values = r.ints(nValues, minValue, maxValue + 1).toArray();


         // min to sum is the threshold

         int minToSum = r.nextInt(7) + 10; // between 10 an 16 inclusive



         int sum = Arrays.stream(values).filter(m -> m > minToSum).sum();


         System.out.println("sum = " + sum + " for greater than " + minToSum

               + " : " + Arrays.toString(values));

      }

以下输出。


sum = 65 for values greater than 11 : [2, 10, 14, 23, 28]

sum = 92 for values greater than 10 : [13, 18, 15, 19, 27]

sum = 94 for values greater than 12 : [25, 6, 14, 25, 30]

sum = 54 for values greater than 10 : [14, 8, 14, 26, 5]

sum = 22 for values greater than 15 : [15, 8, 13, 22, 14]

sum = 28 for values greater than 13 : [3, 28, 9, 6, 5]

sum = 87 for values greater than 13 : [5, 18, 25, 21, 23]

sum = 31 for values greater than 13 : [16, 7, 12, 2, 15]

sum = 42 for values greater than 15 : [7, 22, 20, 10, 5]

sum = 40 for values greater than 12 : [2, 2, 13, 27, 9]


查看完整回答
反对 回复 2023-12-13
  • 4 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信