2016-10-10 58 views
0

我接到這個任務: 「小法,calculateProduct要寫到它會要求用戶輸入兩個int值,然後計算並顯示產品。例如,如果用戶輸入數字2和5,則程序將顯示結果120(計算爲2 * 3 * 4 * 5)「的java:如何計算的所有值之間的乘法變量差異

我試圖構建類似於這個:

import java.util.Scanner; 

public class Exam { 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    int a; 
    int b; 
    int big; 
    int small; 
    //ask to insert two variables 
    System.out.println("Insert variable a"); 
    a = in.nextInt(); 
    System.out.println ("Insert variable b"); 
    b=in.nextInt(); 
    // compare two variables 
    // set the biggest variables to b, the smallest - to a 
    if (a >=b){ 
     big=a; 
     small=b; 
    } 
    else { 
     big=b; 
     small=a; 
    } 
    // set the do while loop to complete the code. Run multiplying before counter won't fit to b variable 
    int result = small; 
    for (int i=small; i<=big;i++){ 
     result*=i; 
    } 
    System.out.println("the multiplication progression between "+small+" and "+big+" equals to "+result); 

} 

} 

但是,當我插入2和5時,結果是240.有人知道如何解決它嗎?謝謝!

+3

將'result'初始化爲'1'而不是'small'。 – jsheeran

+2

你乘以'小'兩次。 –

回答

1

更改環路:

for (int i = small + 1; i <= big; i++) 
{ 
    result *= i; 
} 
+0

這是正確的。通過初始化i = small,您將在您的範圍內使用小的「包含」而不是獨佔。 –

+0

謝謝!有用! –

0

你的init小的結果,那麼小再乘以它。

修復:啓動與小+ 1

... 
int result = small; 
for (int i=small+1; i<=big;i++){ 
    result*=i; 
} 
.... 
0

的其他明顯位置解決方案的語句是從

int result = small; 

改變初始化語句

int result = 1; 

在這種如果您不需要觸摸循環代碼。

並記錄:「小」在這裏是一個相當糟糕的名字,爲什麼不稱之爲「smallInput」或類似的東西。

最後:你能避免處理「小」 - 如果< B可以簡單地從A到B循環;否則你可以從「b到a」向後「循環」。

0

只要改變你的循環,如下所述將解決你的問題。 在循環的問題是:

在其第一次迭代是多與本身,而不是它的 增加值。

來源:

for (int i=small; i<=big;i++) 

要:

for (int i=small+1; i<=big;i++) 
0

的任務是寫一個名爲 「calculateProduct」 的方法。上面你正在做主要方法中的所有調用。嘗試分開。例如:

import java.util.Scanner; 

public class Exam { 

    public static void main (String[]args) { 
     Scanner in = new Scanner(System.in); 
     int a; 
     int b; 
     System.out.println("Insert variable a"); 
     a = in.nextInt(); 
     System.out.println ("Insert variable b"); 
     b=in.nextInt(); 
     if(a>=b){ 
      calculateProduct(b,a); 
     } 
     else{ 
      calculateProduct(a,b); 
     } 
    } 

    public static void calculateProduct (int m, int n) { 
     int result = 1; 
     for (int i = m; i <= n; i++) { 
      result *= i; 
     } 
     System.out.println("the multiplication progression between "+m+" and "+n+" equals to "+result); 
    } 
} 
+0

魔法。謝謝! –