我要求用户输入两个随机数(即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。
答案 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()
它的作用:
min()
和max()
请注意:
某些数字组合产生的总和高于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;
}