소스 파일명: TestWhileLoop.java

  1. /*
  2.  *  Filename: TestWhileLoop.java
  3.  *
  4.  *  Purpose:  Example using the while loop syntax
  5.  *                while ....
  6.  *
  7.  *  Compile: javac -d . TestWhileLoop.java
  8.  *  Execute: java TestWhileLoop -200 300
  9.  *
  10.  */
  11. import java.lang.Math;
  12. public class TestWhileLoop {
  13.     // 사용법 표시
  14.     public static void printUsage() {
  15.          System.out.println("Using: java TestWhileLoop [integer1] [integer2]");
  16.          System.out.println("This finds the greatest common divisor of the given two integers.");
  17.     }
  18.     // Java 애플리케이션의 실행 시작 시점 main 메소드
  19.     // (C 언어의 main 함수에 해당)
  20.     public static void main(String[] args) {
  21.         if (args.length != 2) {
  22.             printUsage();
  23.             System.exit(1);
  24.         }
  25.         ////////////////////////////////////////////////
  26.         // 명령행 인자의 두 스트링을 가져와서
  27.         // 긴정수(long) 타입으로 변환하여
  28.         // 변수 val1과 val2에 저장한다.
  29.         long val1 = Long.parseLong(args[0]);
  30.         long val2 = Long.parseLong(args[1]);
  31.         long a, b, q, r, gcd;    // r은 나머지, q는 몫
  32.         // a는 |val1|, |val2| 중 큰 값
  33.         a = Math.abs(val1);
  34.         b = Math.abs(val2);
  35.         if (a < b) {
  36.             a = Math.abs(val2);
  37.             b = Math.abs(val1);
  38.         }
  39.         if (b == 0L) {
  40.             System.out.println("GCD(" + val1 + ", " + val2 + ") = " + a);
  41.             System.exit(0);
  42.         }
  43.         ////////////////////////////////////////
  44.         // Euclidean 알고리즘의 시작
  45.         //
  46.         // a를 b로 나누어 몫은 q에, 나머지는 r에 저장
  47.         q = a / b;
  48.         r = a % b;
  49.         ////////////////////////////////////////
  50.         // Euclidean 알고리즘의 반복 (나머지 r이 0이 될 때 까지)
  51.         while (r != 0L) {
  52.             a = b;
  53.             b = r;
  54.             q = a / b;
  55.             r = a % b;
  56.         }
  57.         // 나머지가 0이면 그 때 나눈 수(제수) b가 최대공약수(GCD)이다.
  58.         gcd = b;
  59.         // 최대공약수(GCD)를 출력한다.
  60.         System.out.println("GCD(" + val1 + ", " + val2 + ") = " + gcd);
  61.     }
  62. }

컴파일> javac -d . TestWhileLoop.java

실행> java TestWhileLoop
Using: java TestWhileLoop [integer1] [integer2]
This finds the greatest common divisor of the given two integers.

실행> java TestWhileLoop 200 300
GCD(200, 300) = 100

실행> java TestWhileLoop 50, -20
GCD(50, -20) = 10

실행> java TestWhileLoop -30, 0
GCD(-30, 0) = 30



Groovy를 사용하면 위의 소스를 (컴파일 과정 없이) 그대로 실행시킬 수 있다. 그대신 파일 확장자명을 groovy로 하여 저장하여야 한다. 아래는 파일명을 TestWhileLoop.groovy로 저장하여 실행시칸 경우이다.


실행> groovy TestWhileLoop.groovy
Using: java TestWhileLoop [integer1] [integer2]
This finds the greatest common divisor of the given two integers.

실행> groovy TestWhileLoop.groovy -200 500
GCD(-200, 500) = 100

실행> groovy TestWhileLoop.groovy 108, 180
GCD(108, 180) = 36

실행> groovy TestArguments.groovy -30, 0
GCD(-30, 0) = 30




Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.

Posted by Scripter
,