2017-12-03 238 views
0

我想總結兩個數字之間的值的範圍。我提示用戶輸入2個號碼,如果第一個號碼大一些,我想在循環前用第二個號碼交換。我怎樣才能做到這一點?2個數字範圍的總和是多少?

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

     int n1 = 0, n2 = 0, count = 0; 

     System.out.print("Enter two limits: "); 
     n1 = kb.nextInt(); 
     n2 = kb.nextInt(); 

     while (n1 <= n2) { 
      count = count + n2; 
      n2--; 
     } 
     System.out.println("The sum from "+ n1 +" to "+ n2 +" is : " + count); 
    } 
} 

,我想輸出告訴我(如果I型6和10)

the sum from 6 to 10 is 40 

,但我的程序輸出

the sum from 6 to 5 is 40 

我在做什麼錯?

+0

遺憾的是我的錯,但我的意思是,如果用戶輸入更大的第一程序應該交換號是第一個數字是低 – mmmmmzdsdsd5555

+1

' n2 - '是遞減你的輸入​​值 – ti7

回答

3

可以使用Math.max(int, int)Math.min(int, int)(和IntStream,您使用的是Java假設8+)。像,

Scanner kb = new Scanner(System.in); 
System.out.print("Enter two limits: "); 
int n1 = kb.nextInt(); 
int n2 = kb.nextInt(); 
int start = Math.min(n1, n2), stop = Math.max(n1, n2); 
System.out.println("The sum from " + n1 + " to " + n2 + " is : " 
     + IntStream.rangeClosed(start, stop).sum()); 

如果您不能出於某種原因,還是很方便的小動作使用Math,你可以做一些數學自己的;像

int start = n1; 
if (n2 < n1) { 
    start = n2; 
} 
int stop = n2 + n1 - start; 

int start = (n1 < n2) ? n1 : n2, stop = n2 + n1 - start; 
0
Scanner in = new Scanner(System.in); 

int n1; 
int n2; 
int count = 0; 

System.out.print("Enter two limits: "); 
n1 = in.nextInt(); 
n2 = in.nextInt(); 
if (n1 > n2) { 
    n1 += n2; 
    n2 = n1 - n2; 
    n1 -= n2; 
} 
int current = n1; 
while (current <= n2) { 
    count += current; 
    current++; 
} 
System.out.println("The sum from " + n1 + " to " + n2 + " is : " + count);