如何将两个随机生成的数字相加? Java的

时间:2017-09-15 09:57:33

标签: java addition

我要求用户输入两个随机数(即1 10),然后我必须将它们相加,所以(1 10)将是55.

public int sum(int num1, int num2) {

    int counter; //just a variable until I clean this up and get it to work
    questions++;

    if (num1 < num2) {
        int difference = num2-num1;//difference between the   given numbers
        int holder = 0;
            while (holder <= difference) {
                holder ++;
                num1 += num1;
            }
        counter = num1;
    }
}

这是我一直在测试的代码块。当我运行1和10时,这给了我256。

4 个答案:

答案 0 :(得分:1)

if (num1 < num2)
    {
        int answer = num1;
            while (num1 <= num2)
            {
                answer = answer + num1++;
            }
       retrun answer;
    }

答案 1 :(得分:1)

Java 8变体:

IntStream.rangeClosed(Math.min(num1, num2), Math.max(num2, num1)).sum()

它的作用:

  1. 创建包含从num1到num2的所有数字的整数范围
    • 我们需要确保左边框始终小于右边框,否则范围将为空。这就是我使用min()max()
    • 的原因
  2. 将所有数字加在一起。
  3. 请注意: 某些数字组合产生的总和高于Integer.MAX_VALUE,这将导致总和溢出并可能产生负值。 这可以通过使用略有不同的版本来解释,但性能稍差:

    IntStream.rangeClosed(Math.min(num1, num2), Math.max(num2, num1))
      .mapToObj(BigInteger::valueOf)
      .reduce(BigInteger.ZERO, BigInteger::add);
    

答案 2 :(得分:0)

public int sum(int num1, int num2) {
    int result = 0;
    while(num1<=num2) {
        System.out.println("num1 is: "+num1);
        result = result + num1;
        num1++;
    }

    return result;
}

请注意循环中的打印行以显示while的进度。

答案 3 :(得分:0)

我猜你这是一个编程练习,所以使用循环是任务的重点。但是,如果您只是希望代码能够为您提供正确答案,则可以使用算术系列公式:

public int sum(int num1, int num2) {
    if (num1 <= num2) {
        return (num2 - num1 + 1) * (num1 + num2) / 2;
    }

    return 0;
}