2017-04-24 60 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; 
}