초등학교 때 배우는 두 정수의 곱셈표를 만들어 주는 자바 애플리케이션 소스이다.

/**
 * Filename: MakeMultTableApp.java
 *
 *     Print a multiplication table.
 *
 *     Compile: javac -d . MakeMultTableApp.java
 *     Execute: java MakeMultTableApp 230 5100
 *
 * Date: 2009/03/06
 * Author: pkim (AT) scripts.pe.kr
 */

import java.io.*;
import java.util.*;

public class MakeMultTableApp {
    public static void printUsing() {
        System.out.println("Using: java MakeMultTableApp [number1] [number2]");
        System.out.println("Print a multiplication table for given two integers.");
    }

    public static void printMultTable(long x, long y) {
        long nx = (x >= 0L) ? x : - x;
        long ny = (y >= 0L) ? y : - y;
        int ntail1 = 0;
        int ntail2 = 0;
        while (nx % 10 == 0) {
            nx = nx / 10;
            ntail1++;
        }
        while (ny % 10 == 0) {
            ny = ny / 10;
            ntail2++;
        }
        long z = nx * ny;
        String strZ = "" + z;
        String strX = "" + nx;
        String strY = "" + ny;
        int n = strY.length();
        String zeros  = "0000000000000000000000000000000000000000";
        String whites = "                                        ";
        String bars   = "----------------------------------------";
        String line1, line2, line3, line4;
        String loffset = "       ";
        line4 = loffset + strZ;
        line1 = loffset + whites.substring(0, strZ.length() - strX.length()) + strX;
        line2 = "   x ) " +  whites.substring(0, strZ.length() - strY.length()) + strY;
        line3 = "     --" +  bars.substring(0, strZ.length());
        System.out.println(line1 + zeros.substring(0, ntail1));
        System.out.println(line2 + zeros.substring(0, ntail2));
        System.out.println(line3);
        if (strY.length() > 1) {
            int y1;
            String strT;
            for (int i = 0; i < strY.length(); i++) {
                y1 = Integer.parseInt(strY.substring(strY.length() - i - 1, strY.length() - i));
                if (y1 != 0) {
                    strT = "" + (nx * y1);
                    System.out.println(loffset + whites.substring(0, strZ.length() - strT.length() - i) + strT);
                }
            }
            System.out.println(line3);
        }
        System.out.println(line4 + zeros.substring(0, ntail1) + zeros.substring(0, ntail2));
    }

    public static void main(String[] args) {
        long x, y;
        if (args.length >= 2) {
            x = Long.parseLong(args[0]);
            y = Long.parseLong(args[1]);
            System.out.println("");
            printMultTable(x, y);
        }
        else {
            printUsing();
        }
    }
}



컴파일> javac -d . MakeMultTableApp.java

실행> java MakeMultTableApp 230 5100
결과>

          230
   x )   5100
     ------
         23
       115
     ------
       1173000

 

크리에이티브 커먼즈 라이선스
Creative Commons License

 

Posted by Scripter
,