コード四角ココアjava#6


21.109(火)

振り返る


  これは授業中の一日です.知らない内容が脳に注入され続け、過剰孵化を招いた.また,昨日プレイしたパリティゲームのフィードバック(1.メソッドが多すぎる2.変数名,メソッド名が大文字でエラー)として2種類得られたが,まだ1番を修正していない.まず2回改善したコードを書いて、今日の授業で新しく学んだ内容と好奇心のある内容を整理します.(++レベルも分けました.)
package D3;

public class OddOrEven {

    public static void main(String[] args) {
        Play play = new Play();
        play.inputData();
    }
}
package D3;

import java.util.Scanner;

import static java.lang.Math.min;
import static java.lang.Math.pow;

public class Play {
    private Scanner sc = inputPlayerName();

    private int playerCapital = 100;
    private int computerCapital = 120;
    private int stageCount = 1;

    public int inputData() {
        int computerRandomNum = selectComputerRandomNum();

        String playerInputOddEven = inputOddEven(sc, "홀,짝을 입력해주세요.");
        int betMoney = checkBetMoney(sc, playerCapital, computerCapital);

        String computerOddEven = checkOddEven(computerRandomNum);

        if (playerInputOddEven.equals(computerOddEven)) {
            computerCapital = computerLose(computerCapital, betMoney, "현재 상대방의 잔액은 ");
            playerCapital = playerWin(playerCapital, betMoney, "현재 나의 잔액은 ");
        } else {
            playerCapital = playerLose(playerCapital, betMoney);
            computerCapital = computerWin(computerCapital, betMoney, "현재 상대방의 잔액은 ");
        }

        if (stageCount == 8 && computerCapital == 0) {
            playerWin(playerCapital, stageCount);
        } else if (computerCapital == 0) {
            stageCount++;
            computerCapital = nextLevel(playerCapital, stageCount);
            return inputData();
        } else if (playerCapital == 0) {
            playerlose(playerCapital, stageCount);
        } else {
            return inputData();
        }
        return playerCapital;
    }

    private static Scanner inputPlayerName() {
        Scanner sc = new Scanner(System.in);
        String playerName = inputOddEven(sc, "플레이어의 이름을 입력해주세요.");
        System.out.println("플레이어의 이름은 " + playerName + " 입니다.");
        return sc;
    }

    private static int selectComputerRandomNum() {
        int computerRandomNum;
        computerRandomNum = (int) (Math.random() * 20) + 1;
        return computerRandomNum;
    }

    private static String inputOddEven(Scanner sc, String s) {
        System.out.println(s);
        return sc.next();
    }

    private static int checkBetMoney(Scanner sc, int playerCapital, int computerCapital) {
        int validBetMoney = getInputBetMoney(sc);

        while (validBetMoney != 0) {
            if (validBetMoney > min(playerCapital, computerCapital)) {
                System.out.println("베팅 금액을 초과하였습니다." + "\n" + min(playerCapital, computerCapital) + " " + "이하로 입력해주세요.");
                validBetMoney = getInputBetMoney(sc);
            } else {
                break;
            }
        }
        return validBetMoney;
    }

    private static int getInputBetMoney(Scanner sc) {
        System.out.println("베팅 금액을 입력해주세요.");
        int inputBetMoney = sc.nextInt();
        return inputBetMoney;
    }

    private static String checkOddEven(int n) {
        String computerOddEven;

        if (n % 2 == 0) {
            computerOddEven = "짝";
        } else {
            computerOddEven = "홀";
        }
        return computerOddEven;
    }

    private static int computerLose(int computerCapital, int betMoney, String s) {
        computerCapital -= betMoney;
        System.out.println(s + computerCapital + "입니다.");
        return computerCapital;
    }

    private static int playerWin(int playerCapital, int betMoney, String s) {
        playerCapital += betMoney;
        System.out.println(s + playerCapital + "입니다.");
        return playerCapital;
    }

    private static int computerWin(int computerCaptial, int betMoney, String s) {
        computerCaptial = playerWin(computerCaptial, betMoney, s);
        return computerCaptial;
    }

    private static int playerLose(int playerCaptial, int betMoney) {
        playerCaptial = computerLose(playerCaptial, betMoney, "현재 나의 잔액은 ");
        return playerCaptial;
    }


    private static void playerWin(int playerCapital, int i) {
        System.out.println("WIN!!");
        System.out.println("당신의 소지금은 " + playerCapital + " 이며, 총 " + i + "라운드 진행되었습니다.");
    }

    private static int nextLevel(int playerCapital, int roundCount) {
        int computerCapital;
        computerCapital = (int) (playerCapital * pow(1.2, roundCount));
        System.out.println(roundCount + "라운드" + ">>" + "새로운 상대가 등장합니다.");
        return computerCapital;
    }

    private static void playerlose(int playerCaptial, int roundCount) {

        System.out.println("당신의 소지금은 " + playerCaptial + " 이며, 총 " + roundCount + "라운드 진행되었습니다.");
        System.out.println(" - Game Over - ");
    }
}

新しく学んだ内容

  • コミットを有意義に書きましょう(各メソッドの機能実装は、タイトルのすべての内容:udacityコミットガイドを参照してください)
  • 保留語(保留語として宣言しない)
  • について考えてみましょう.
  • をコミットする前に、コードの再フォーマットが必要です.(コミット時の形式は「単行要約見出し/<単行区切り>/詳細」)
  • .
  • 法の増加に伴い,これをクラスに分類した.
  • コットは「アルゴリズム問題解決戦略」という本を推薦するつもりだ.
  • クラス名の最初の字は必ず大文字でなければなりません.
  • が実施される前に、方法名
  • を1つずつ注記->にまとめてください.
  • メソッドは、パラメータと戻り値を使用して通信する.
  • 反復文は、CPUの高速動作速度を利用し、コードの簡略化に使用される.
  • 条件文は、作業を検証するためのフィルタです.
  • Returnの2つの意味(1.メソッドを終了します./2.呼び出しの方向に値を返します.)
  • なぜ
  • Returnを使用するのか:メソッド間の通信、すなわち
  • 、インタラクション用
  • メソッドは一度に1つのことをし、メソッドが集まってプログラムを完了します.
  • オブジェクトは、クラスで作成されたとは限りません.(Javaのみ)
  • 行動は常に状態を変化させ、行動は他のオブジェクトの状態を変化させる.
  • クラスに分類->オブジェクト向けのプログラミングまたは設計.
  • オブジェクト向けプログラムは、非常に大きなプログラムの作成とメンテナンスが容易です.
  • 関数型は最近どのように多く使われていますか?(インターネットの発展とビッグデータ時代の到来に伴い、演算速度はますます重要になってきた)
  • メソッドを作成する場合、無条件の基本は「private」です.
  • 気になること(今週末整理)

  • の2 Dアレイとは?
  • this. 何だったっけ?(オブジェクトを作成する場合はthis.xのxを参照)
  • メソッド宣言時finalとは何ですか?
  • getterとsetterは何ですか?
  • 強化FOR MOONとは?
  • メソッド領域、JVMメモリは?
  • 実行時にこのトピックのために'-これはどういう意味ですか?
  • hasnextって何ですか?
  • Call By ValueとCall By Referenceのコアとは?
  • 文書
  • では、ある関数を呼び出すときに、関数のパラメータにパラメータを渡すときに、パラメータをどのように渡すかについて説明する.
  • Callby Value:パラメータをコピーし、パラメータ
  • に置き換えます.
  • Call by Reference:Parameterは元のArgumnetを直接参照します.したがって,関数の動作中にパラメータの変化が引数に影響する.
  • ArgumentとParameterの違いは?
  •   Q1. 2 Dアレイとは

  • 多次元配列の1つで、配列要素であり、異なる配列を有する配列を表す.
    (2 D配列は配列要素として1 D配列を持つ配列です.)
  • Javaは2 D配列を表すタイプを提供しないので、1 D配列を使用してタグ付けされます.
  • 構文としてマーク
    1)タイプ[][]配列名;
    2)タイプ配列名[];
    3)タイプ[]配列名[];
    図解された2 Dアレイ

    例1(アレイ宣言と同時に初期化する方法)
    int[][] arr = {
    {10, 20, 30},
    {40, 50, 60}
    }
    実行結果
    10 20 30
    40 50 60
    例2(可変配列:行ごとに異なる長さの配列を要素として格納できます.)
    int[][] arr = {
    {10, 20},
    {30, 40, 50},
    {60, 70}
    }
    実行結果
    10 20
    30 40 50
    60 70