2017-04-24 58 views
0

我做错了什么?我真的不知道还有什么可以尝试或者我的错误在哪里。谢谢你的帮助。它应该计算两个数字之间的整数之和,例如和之间这将是 + 4 + 5 +计算两个整数之和(java)

import java.util.Scanner; 
public class TheSumBetweenTwoNumbers { 
    public static void main(String[] args) { 
     Scanner reader = new Scanner(System.in); 

     System.out.println("First:"); 
     int n = Integer.parseInt(reader.nextLine()); 

     System.out.println("Second:"); 
     int max = Integer.parseInt(reader.nextLine()); 

     int sum = 0; 
     int i = 0; 
     int difference = max - n; 

     while (i < difference) { 
      sum = n + (n + 1); 
      n++; 
      i++; 

     } 

     System.out.println("Sum is " + sum);    
    } 
} 
+1

'IntStream.rangeClosed(最小值,最大值)的.sum();'' –

+0

INT总和=(最大* (max + 1) - min *(min - 1))/ 2;' – 4castle

回答

1

为什么这一切,你只需要一个这样的一段代码:

public static void main(String args[]) { 
    int min = 3, max = 6, sum = 0; 
    for (int i = min; i <= max; i++) { 
     sum += i; 
    } 
    System.out.println(sum); 
} 

随着while loop应该是:

... 
int i = min; 
while (i <= max) { 
    sum += i; 
    i++; 
} 
... 
0

你不需要找到一个difference并循环它,只需要运行一个循环从nmax都可以。此外,您还需要补充,而不是值分配给它(=,这将覆盖以前的值)

试试这个价值sum+=):

int i = n; 

while (i <= max) { 
    sum += i; 
    i++; 
} 
0

你覆盖以前sum值与最近的n + (n + 1),而不是累积以前的总和。而且,你的循环只需要一次迭代。试试这个:

int sum = 0; 
for (int i = n; i <= max; i++) { 
    sum += i; 
} 
System.out.println("Sum is " + sum); 
0

更改这个片段

int sum = 0; 
int i = 0; 
int difference = max - n; 

while (i < difference) { 
    sum = n + (n + 1); 
    n++; 
    i++; 

} 

int sum = 0; 
int i = n; 

while (i <= max) { 
    sum = sum + i; 
    i++; 
} 
0

你做一点点过于复杂。所有你真正需要的是一个用于从n运行到max,增加了递增变量循环:

int sum = 0; 
for(int i = n; i <= max; i++){ 
    sum += i; 
}