【初心者】【JavaでFizzBuzzゲームをつくってみた】
こんばんは。
駆け出しプログラマーの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で電卓プログラムをつくってみた】その③~入力文字が演算子かどうか~
その②からのつづき。
入力文字が演算子かどうか確認するメソッドですが、以下の方法もあるようです。
//入力文字が演算子かどうか確認するメソッド static boolean checkOpe(char checkope){ boolean result = false; if(checkope == '+' || checkope == '-' || checkope == '*' || checkope == '/'){ result = true; } return result; }
・char型になっているのでシングルクォーテーション('')を使う
・|| をつかうと、または、または、で条件が書けること
を学びました。
【Javaで電卓プログラムをつくってみた】その②~機能ごとにメソッド化する~
さて、以前の続きです。
改良に改良を加えてできたプログラムです。
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で電卓プログラムをつくってみた】その①
こんにちは。駆け出しプログラマーの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で電卓プログラムをつくってみた】その②へ