最近の記事
-
-
- 再生
じゃんけんゲームを作成しました。動画としては1分間のコーティングで作成しているので、複数回にわたり作成しています。作成する単位は、メソッド毎に作成しているので、入力チェック処理、勝敗判定処理を動かすメインメソッドの実装になります。標準入力でユーザーの入力を受けて実行するプログラミングです。
<じゃんけんゲームの設計> 【前提】 下のように、入力値=0ならばグーとして扱います。 ******************* グー : 0 チョキ: 1 パー : 2 ******************* 【プログラム仕様】 1. 入力値が1文字かつ、0-2の範囲、それ以外はエラーのチェックを行う 2. CPUの手を乱数で生成 3. じゃんけんの勝敗判定アルゴリズムで判定処理 4. 勝敗結果の表示 【コード】 public class BasicBunpo { public static final int WIN = 2; public static final int LOOSE = 1; public static final int AIKO = 0; private static final int GU = 0; private static final int CHOKI = 1; private static final int PA = 2; private String name; public static void main(String[] args) { BasicBunpo main = new BasicBunpo(); Scanner sc = new Scanner(System.in); ///////////////////////////// // じゃんけんゲームの処理を開始 // ///////////////////////////// // 1.じゃんけんゲームを開始することを標準出力に出力 System.out.println("じゃんけん。。。"); // 2.ユーザーの手を受け取る String in = sc.nextLine(); // 3.入力値が1文字かつ、0-2の範囲、それ以外はエラーのチェックを行う if (main.okLength(in) == false && main.isNumber(in) == false) { System.out.println("府定説な入力です: " + in); System.exit(-1); } // 4.CPUの手を乱数で生成 Random rnd = new Random(); int cupTe = rnd.nextInt(3); // 5.じゃんけんの勝敗判定アルゴリズムで判定処理 int userTe = Integer.parseInt(in); int res = main.judge(userTe, cupTe); // 6.勝敗結果の表示 if (res == WIN) { System.out.println("ユーザーの勝ち"); } else if (res == LOOSE) { System.out.println("ユーザーの負け"); } else if (res == AIKO){ System.out.println("あいこ"); } else { System.out.println("想定外の値です。"); System.exit(-1); } } /** じゃんけんゲームを開始する文章 */ public void printJankenHead() { System.out.println("じゃんけんゲームです。"); System.out.println("*******************"); System.out.println(" グー : 0"); System.out.println(" チョキ: 1"); System.out.println(" パー : 2"); System.out.println("*******************"); } public void setName(String name) { this.name = name; } public void printName() { System.out.println("Name; " + name); } public boolean okLength(String str) { return str.length() == 1; } public int judge(int myTe, int cpuTe) { return (myTe - cpuTe + 3) % 3; } public boolean isNumber(String num) { if (num == null) { return false; } return num.matches("[0-90]"); } @Test public void test1() { assertTrue(okLength("1")); assertFalse(okLength("12")); } @Test public void test2() { Random rnd = new Random(); int res = rnd.nextInt(3); for (int i = 0; i < 10; i++) { if (res > 3) { fail(); } } } @Test public void test3() { assertEquals(WIN, judge(GU, CHOKI)); assertEquals(LOOSE, judge(PA, CHOKI)); assertEquals(AIKO, judge(GU, GU)); } @Test public void test4() { assertTrue(isNumber("1")); assertFalse(isNumber("a")); } }
- 再生
javaプログラミングでの、Calendarクラスを使ってみました。日付操作の基本です。クラスの使い方がnewではなく、getInstance()を使ってインスタンスを取得します。
【処理内容】 1. YOBIの文字列をスペース1つで区切りながら標準出力に出力 2. 1から31までを標準出力に出力 3. 「i % 7 == 0」の時に開業する 【コード】 private static final String[] YOBI = {"Mon", "Tue","Wed","Thi","Fri","Sat","Sun" }; private void printLoop(String[] arr, boolean isPrint) { String SEP = System.lineSeparator(); System.out.println("*** 文字列のループ ***"); if (isPrint) { int count = 0; for (int i = 0; i < arr.length; i++) { System.out.println("i=" + i + " 配列: " + arr[i]); count = i; } System.out.println("count=" + count); } else { StringBuilder build = new StringBuilder(); for (String s : arr) { build.append(s + " "); } System.out.print(build.toString() + SEP); } } @Test public void testCal() { printLoop(YOBI, false); for (int i =1; i < 32; i++) { System.out.print(String.format("% 4d",i)); if (i %7==0) { System.out.println();
-