• 締切済み

メソッドを使ったプログラム

メソッドをつかったプログラムで数当てゲームを作成したいのですが 1から1000までのランダムな値(以降 数値X として)を取得し、プレイヤーにその数を当てさせる。 プレイヤーが入力した数値(以降 数値Y として)が数値Xより大きければ『もっと小さいです』、数値Yが数値Xより小さければ『もっと大きいです』と出力する。 数値Xと数値Yが同じになるまで繰り返し、何回であったたかを最後に表示する。 条件:以下の処理の単位をメソッドにする。   1.1から1000までのランダムな値を取得する。   2.数値X、数値Yの関係(大小、等しい)を調べ、適切なメッセージを出力する というプログラミングを作成したいのですがどういうふうにしたらよいのかわかりません!! import java.io.*; class Question7_2{ public static void main(String[] args){ BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("数当てゲーム"); というところでとまった状態です。どのようにしたらよいか教えてください!例外発生やIf文を使うというのまではわかるのですが…

みんなの回答

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.2

ANo1さんの回答は高度なので私には理解できませんでした。 初心者向けに書いた以下のコードはいかがですか。 尚、テストに時間がかかるので10以下の数当てにしました。 import java.io.*; class Question7_2{ static int count = 0; public static void main(String[] args){ System.out.println("数当てゲーム"); System.out.println("10以下の整数を入れてください"); System.out.println("終了は99を入れてください"); while(!hantei()){ hantei(); } } public static int intRandom(){ double doubleValue = Math.random(); System.out.println("発生したのはdouble" + doubleValue); int intValue =(int)(doubleValue*10); System.out.println("intに変換したのはint" + intValue); return intValue; } public static boolean hantei(){ boolean flag=false; try{ BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); int x = Integer.parseInt(r.readLine()); System.out.println("入力したのはint" + x); if(x == 99){ System.exit(1); } int y = intRandom(); if(x == y){ flag=true; System.out.println("当たりまでの回数" + count); }else{ flag = false; count++; System.out.println("挑戦回数" + count); } } catch(IOException e){ System.out.println("エラーは" + e); } return flag; } }

kojiin
質問者

お礼

ありがとうございます! tachiwaさんのサンプルを参考に自分なりにつくってみました!! import java.io.*; class Question6_2{ public static void main(String[] args){ BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("数当てゲーム"); int x=0,y; int hit=0; boolean flag=true; x = rand(); while(flag){ System.out.println("1から1000の値を入力してください。"); String s = r.readLine(); y = Integer.parseInt(s); flag = hikaku(x,y); hit++; } System.out.println("手数"+hit+"回"); }catch (IOException e){ System.out.println("例外発生" + e); }catch(NumberFormatException e){ System.out.println("整数以外が入力されました。"); } } public static int rand(){ int x; x = (int)(Math.random() * 1000 ) +1; return x; } public static boolean hikaku(int x,int y){ if(y > x ){ System.out.println("もっと小さいですよ "); }else if(y < x){ System.out.println("もっと大きいですよ"); }else { System.out.println("正解です"); return false; } return true; } }

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

import java.io.*; import java.util.*; public class HitInt { private static int makePositiveIntNumber(int max){ return new Random().nextInt(max)+1; } private static boolean judge(int a, int b){ if(a > b){ System.out.println("もっと大きいです"); } if(a < b){ System.out.println("もっと小さいです"); } return a == b; } public static void main(String argv[]){ int count = 0; int X = makePositiveIntNumber(1000); int Y = 0; boolean decision = false; Scanner keyboard = new Scanner(System.in); System.out.println("1~1000の数値を考えました。"); System.out.println("その数を当てて下さい。"); do{ System.out.print("数値を入力>"); try{ Y = keyboard.nextInt(); decision = judge(X, Y); count++; } catch(InputMismatchException e){ System.out.println("入力誤り!"); } }while(decision == false); System.out.printf("%d回で正解しました!", count); } }

kojiin
質問者

お礼

ありがとうございます! BLUEPIXYさんのサンプルを参考に自分なりにつくってみました!! import java.io.*; class Question6_2{ public static void main(String[] args){ BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("数当てゲーム"); int x=0,y; int hit=0; boolean flag=true; x = rand(); while(flag){ System.out.println("1から1000の値を入力してください。"); String s = r.readLine(); y = Integer.parseInt(s); flag = hikaku(x,y); hit++; } System.out.println("手数"+hit+"回"); }catch (IOException e){ System.out.println("例外発生" + e); }catch(NumberFormatException e){ System.out.println("整数以外が入力されました。"); } } public static int rand(){ int x; x = (int)(Math.random() * 1000 ) +1; return x; } public static boolean hikaku(int x,int y){ if(y > x ){ System.out.println("もっと小さいですよ "); }else if(y < x){ System.out.println("もっと大きいですよ"); }else { System.out.println("正解です"); return false; } return true; } }

関連するQ&A