元小学校教員!がIT企業へ転職したリアルなブログ

公立の小学校教員を4年間勤めた後、IT企業へ転職しました。教育・転職・ITに関する情報を発信していきます。

【初心者】【JavaでFizzBuzzゲームをつくってみた】

f:id:akiho817:20200417214009j:plain

こんばんは。
駆け出しプログラマーのakhです。


if文、for文を使ってFizzBuzzゲームを作ってみました。


少し前に、「世界のナベアツ」が流行りましたよね!
あれです。

プログラムの仕様は、以下の通りです。

・1から100までの数字を順番に画面に表示する
・ただし、3の倍数は「Fizz」、5の倍数の場合は「Buzz」
 3と5の倍数の場合は「FizzBuzz」を画面に表示する。

少し前に、「世界のナベアツ」が流行りましたよね!
あれです。

実際に書いてみました。

public static void main(String[] args) {
	System.out.println("こんにちは!みなさん");
	System.out.println("世界のナベアツを知っていますか?");
	System.out.println("「Yes」か「No」で答えてね>");
	String input = new java.util.Scanner(System.in).nextLine();
	if(input.equals("Yes")){
        	for(int i=1; i<=100; i++){

			if(i%15 == 0){
				System.out.println("FizzBuzz");
			}else if(i%3 == 0){
				System.out.println("Fizz");
			}else if(i%5 == 0){
				System.out.println("Buzz");
			}else{
				System.out.println(i);
			}
		    }
	}else{
		System.out.println("おかえりください。");
	}
}

入力装置も付けてみました。
表示画面は、こんな感じです。

こんにちは!みなさん
世界のナベアツを知っていますか?
「Yes」か「No」で答えてね>
Yes
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31
32
Fizz
34
Buzz
Fizz
37
38
Fizz
Buzz
41
Fizz
43
44
FizzBuzz
46
47
Fizz
49
Buzz
Fizz
52
53
Fizz
Buzz
56
Fizz
58
59
FizzBuzz
61
62
Fizz
64
Buzz
Fizz
67
68
Fizz
Buzz
71
Fizz
73
74
FizzBuzz
76
77
Fizz
79
Buzz
Fizz
82
83
Fizz
Buzz
86
Fizz
88
89
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz



【Javaで電卓プログラムをつくってみた】その③~入力文字が演算子かどうか~

f:id:akiho817:20200415235939j:plain
その②からのつづき。

入力文字が演算子かどうか確認するメソッドですが、以下の方法もあるようです。

//入力文字が演算子かどうか確認するメソッド
static boolean checkOpe(char checkope){
	boolean result = false;
	if(checkope == '+' || checkope == '-' || checkope == '*' || checkope == '/'){
		result = true;	
	}
		return result;
	}

・char型になっているのでシングルクォーテーション('')を使う

・|| をつかうと、または、または、で条件が書けること

を学びました。




【Javaで電卓プログラムをつくってみた】その②~機能ごとにメソッド化する~

f:id:akiho817:20200415235939j:plain

さて、以前の続きです。

改良に改良を加えてできたプログラムです。

public static void main(String[] args) {
	double inputnum1 = 0;
	double inputnum2 = 0;
	String inputstr;
	char operand;
        while(true){

	try{
		System.out.println("num1に数字を入れてください。");
		inputstr = new java.util.Scanner(System.in).nextLine();
			if(inputstr.equals("C")){
				System.out.println("クリアしました。");
				continue;
			} else if(checkNum(inputstr)){
				inputnum1 = Double.parseDouble(inputstr);
			} else {
				System.out.println("数字ではありません。");
				continue;
			}

			System.out.println("");
			System.out.println("演算子(+ - * / のいずれか)を入れてください。");
			inputstr = new java.util.Scanner(System.in).nextLine();
			//入力文字の最初の文字を演算子とする
			operand = inputstr.charAt(0);
			if(inputstr.equals('C')){
				System.out.println("クリアしました。");
				continue;
			} else if (checkOpe(operand) == false){
				System.out.println("演算子ではありません");
				continue;
			}

			System.out.println("");
			System.out.println("num2に数字を入れてください。");
			inputstr = new java.util.Scanner(System.in).nextLine();
			if(inputstr.equals("C")){
				System.out.println("クリアしました。");
				continue;
			} else if (checkNum(inputstr)){
				inputnum2 = Double.parseDouble(inputstr);
			} else {
				System.out.println("数字ではありません。");
				continue;
				}
			System.out.println("");
			displayAnswer(inputnum1,inputnum2,operand);
			break;

		} catch(Exception e){
			System.out.println("例外が発生しました");
		}
		}
	}

	//四則演算を行い結果を表示するメソッド
	static void displayAnswer(double number1,double number2,char inope ){
		double answer=0;
		switch(inope){
		case '+':
			answer = number1 + number2;
			break;
		case '-':
			answer = number1 - number2;
			break;
		case '*':
			answer = number1 * number2;
			break;
		//inope = '/'のとき
		default:
			if(number2 == 0){
				System.out.println("0除算のため計算できません");
				//プログラムを終了させる
				System.exit(0);
			} else {
				answer = number1 / number2;
			}
			}
			System.out.println("計算結果:"+ answer);
		}

	//入力文字が数字かどうか確認するメソッド
	static boolean checkNum(String checknum){
		boolean result = true;

		//一文字ずつ先頭から確認する。for文は文字数分繰り返す
		for(int i=0; i<checknum.length(); i++){

		//一文字めの文字についてCharacter.isDigitメソッドで判定する
		if(Character.isDigit(checknum.charAt(i))){
				continue;
			}else{
			//数字でない場合は検証結果をfalseにする
			result = false;
			break;
			}
		}
		return result;

		}

	//入力文字が演算子かどうか確認するメソッド
	static boolean checkOpe(char operand){
		if( "+-*/".indexOf(operand) == -1){
			return false;
		}
		return true;
		}

機能ごとにメソッド化することで、すっきり見やすいコードに変身しました。



【Javaで電卓プログラムをつくってみた】その①

f:id:akiho817:20200415235028j:plain

こんにちは。駆け出しプログラマーのakhです。


課題で、電卓プログラムを作ることになりました。
以下、概要です。

【コンソールを使った電卓プログラム】
概要:規定値を入力可能とし、コンソールに計算結果を表示する。

詳細:
・半角数値、+-*/、C(クリア)、=、.(小数点)のみを入力可能とする。
・入力チェックをし、異常終了が起こらない作りとする。
・四則演算を正しく行える事。
・規定値以外の入力項目はその内容が分かるエラーメッセージをコンソールに出力する。

その他:
・意味のある処理単位(機能単位)でメソッドを作成する事。
・比較する対象の文字列などは定数化する事。
・メソッドの可視性を考慮した作りにする事。


なかなか、初心者にとって、壁が大きい・・・。
私が最初に作ったプログラムは以下の通りです。

public static void main(String[] args) {
	//変数を3つ用意
	double num1 =0;
	double num2 = 0;
	char ope ;
	double answer=0;
	try{
		System.out.println("num1に数字を入れてください。");
		double input = new java.util.Scanner(System.in).nextDouble();
		System.out.println("");
		System.out.println("演算子を入れてください。");
		System.out.println("+, -, *, / のどれか  ");
		String inope = new java.util.Scanner(System.in).nextLine();
		System.out.println("");
		System.out.println("num2に数字を入れてください。");
		double input2 = new java.util.Scanner(System.in).nextDouble();
		if(inope.equals("+")){
			answer = (input+input2);
		}else if(inope.equals("-")){
			answer = (input-input2);
		}else if(inope.equals("*")){
			answer = (input*input2);
		}else{
			answer = (input/input2);
		}
		System.out.println("");
		System.out.println(input+ inope + input2+ "="+ answer);
	} catch(Exception e){
		System.out.println("例外が発生しました");
    	}
	}

C(クリア)の入れ方が分からなかったり、規定値のチェックもままならぬ…
続きは

Javaで電卓プログラムをつくってみた】その②へ



【テスト】初投稿


こんにちは。

Javaを使って学習しています。
学習したことのアウトプットに使っていきますので、よろしくお願いします。
コードの書き方等でアドバイスがあれば、教えてください。

public static void main(String[] args){
       System.ou.println("Hello World!!");
}

表示される画面は

Hello world!!

となります。