丸三角四角

IT業界にしがみつく新人SEが立派なプログラマになろうともがく奮闘記

【Java】九九の出力_Ver3

コード更新致しました。

固有処理基底クラスを更新したので、更新したコードを紹介いたします。

import static java.lang.System.out;
import volume0.BaseExe;

public class QQ extends BaseExe {

    public static void main(String[] args) {
        new QQ().recursionQQ();
    }

    @Override
    protected void execute() throws Exception {
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                out.println(i + "x" + j + "=" + i * j);
            }
        }
    }

    public void recursionQQ() {
        recursionQQ(1);
    }

    public void recursionQQ(int i) {
        if (i > 9)
            return;
        recursionQ(i, 1);
        recursionQQ(++i);
    }

    public void recursionQ(int i, int j) {
        if (j > 9)
            return;
        out.println(i + "x" + j + "=" + i * j);
        recursionQ(i, ++j);
    }
}

テストコードが以下になります。

import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import volume0.BaseTest;

public class QQTest extends BaseTest {

    private QQ qq;

    @Before
    public void setUp() throws Exception {
        super.setUp();
        qq = new QQ();
    }

    @After
    public void tearDown() throws Exception {
        super.tearDown();
    }

    @Test
    public void testLoopQQ0001() {
        qq.exeSysIn();
        assertOutList("./data/volume0_0001/out.txt");
    }

    @Test
    public void testRecursionQQ0001() {
        qq.recursionQQ();
        assertOutList("./data/volume0_0001/out.txt");
    }

    @Test
    public void testRecursionQQ0002() {
        qq.recursionQQ(1);
        assertOutList("./data/volume0_0001/out.txt");
    }

    @Test
    public void testRecursionQ0001() {
        qq.recursionQ(1, 8);
        String[] outList = outContent.toString().split("\n");
        assertEquals("1x8=8", "1x8=8", outList[0]);
        assertEquals("1x9=9", "1x9=9", outList[1]);
    }
}

テストドライバ内で使用している「out.txt」は以下になります。

out.txt
1x1=1
1x2=2
1x3=3
1x4=4
1x5=5
1x6=6
1x7=7
1x8=8
1x9=9
2x1=2
2x2=4
2x3=6
2x4=8
2x5=10
2x6=12
2x7=14
2x8=16
2x9=18
3x1=3
3x2=6
3x3=9
3x4=12
3x5=15
3x6=18
3x7=21
3x8=24
3x9=27
4x1=4
4x2=8
4x3=12
4x4=16
4x5=20
4x6=24
4x7=28
4x8=32
4x9=36
5x1=5
5x2=10
5x3=15
5x4=20
5x5=25
5x6=30
5x7=35
5x8=40
5x9=45
6x1=6
6x2=12
6x3=18
6x4=24
6x5=30
6x6=36
6x7=42
6x8=48
6x9=54
7x1=7
7x2=14
7x3=21
7x4=28
7x5=35
7x6=42
7x7=49
7x8=56
7x9=63
8x1=8
8x2=16
8x3=24
8x4=32
8x5=40
8x6=48
8x7=56
8x8=64
8x9=72
9x1=9
9x2=18
9x3=27
9x4=36
9x5=45
9x6=54
9x7=63
9x8=72
9x9=81

Ver1で問題の解説等していますので、そちらも参照してください。

dadainu.hateblo.jp

アルゴリスムで困った時は、以下の本を参考にしてます。Javaに置き換えるのが少々難解ですが、、、

固有処理の基底クラスは以下の記事に記載していますので、参考にしてください。

dadainu.hateblo.jp

テストドライバで継承しているクラスは以下の記事に記載していますので、参考にしてみてください。

dadainu.hateblo.jp