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 }
}
回答
只需添加一個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);
}
}
所以在我宣佈n2之後? – 2015-02-17 23:07:25
因爲我放了一陣子(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
我只想輸入兩個數字,然後只有在使用負數時才輸出正數 – 2015-02-17 23:14:31
我建議只是得到'n1'和'n2'的絕對值,然後再考慮GCD。 – ssube 2015-02-17 23:05:09