2015-02-17 78 views
0

我將如何獲得此輸出?

import java.util.Scanner; 
 
public class EuclidGCD { 
 

 
\t public static void main(String[] args) { 
 
\t \t Scanner kbd = new Scanner (System.in); 
 
\t \t System.out.print ("Enter First Number: "); 
 
\t \t int n1 = kbd.nextInt(); 
 
\t \t System.out.print ("Enter Second Number: "); 
 
\t \t int n2 = kbd.nextInt(); 
 
\t \t int gcd = 1; 
 
\t \t int k = 2; 
 
\t \t while (k <= n1 && k <= n2){ 
 
\t \t \t if (n1 % k == 0 && n2 % k == 0) 
 
\t \t \t gcd = k ; 
 
\t \t k ++; 
 
\t \t } 
 
\t \t System.out.println("The GCD of " + n1 + " and " + n2 + " is " + gcd); 
 

 
\t } 
 

 
}
所以一切工作,但我意識到,我不想,如果輸入負數,我想輸出正數,只有這樣我就需要另一個while循環負號是多少?

+0

我建議只是得到'n1'和'n2'的絕對值,然後再考慮GCD。 – ssube 2015-02-17 23:05:09

回答

0

只需添加一個if語句來檢查n1和n2是否爲正數,如果它們是隻執行了其餘代碼。你不應該需要另一個while循環

public static void main(String[] args) { 
     Scanner kbd = new Scanner (System.in); 
     System.out.print ("Enter First Number: "); 
     int n1 = kbd.nextInt(); 
     System.out.print ("Enter Second Number: "); 
     int n2 = kbd.nextInt(); 
     if(n1 < 0 || n2 < 0){ 
      System.out.println("POSITIVE NUMBERS ONLY "); 

     }else{ 
      int gcd = 1; 
      int k = 2; 
      while (k <= n1 && k <= n2){ 
       if (n1 % k == 0 && n2 % k == 0) 
       gcd = k ; 
      k ++; 
      } 
      System.out.println("The GCD of " + n1 + " and " + n2 + " is " + gcd); 
     } 
    } 
+0

所以在我宣佈n2之後? – 2015-02-17 23:07:25

+0

因爲我放了一陣子(n1 <0 && n2 <0){ \t \t \t System.out.print(「POSITIVE NUMBERS ONLY」);在int2之後,-5和15的GCD返回爲1時,它應該是正數NUMBERS ONLY – 2015-02-17 23:11:23

+0

我只想輸入兩個數字,然後只有在使用負數時才輸出正數 – 2015-02-17 23:14:31