こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

どこに・・・

import java.io.*;

class janken
{
public static void main(String[] args) throws IOException{
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));

System.out.print("あなたの手を入力して下さい。(1:グー、2:チョキ、3:パー)?\n");

String str = br.readLine();
int a = Integer.parseInt(str);

switch(a){
case 1:
System.out.println("あなたの手はグーです。");
break;
case 2:
System.out.println("あなたの手はチョキです。");
break;
case 3:
System.out.println("あなたの手はパーです。");
break;
default:
System.out.println("1~3を入力してください。");
break;
}

{
int ran = ((int)(Math.random()*3)+1);
int b=ran;
switch(b){
case 1:
System.out.println("コンピュータの手はグーです。");
break;
case 2:
System.out.println("コンピュータの手はチョキです。");
break;
case 3:
System.out.println("コンピュータの手はパーです。");
break;

}

int c;
c=a-b;
if(c == 2){
System.out.println("勝ち");
}
else if(c== -1){
System.out.println("勝ち");
}
else if(c==0){
System.out.println("あいこ");
}
else if(c==1){
System.out.println("負け");
}
else {
System.out.println("負け");
}
}
}
}

いまjavaの勉強をしており、練習をかてね上のようにじゃんけんのプログラムを書きました。今の段階で、一様動くのですが、一回ごとにじゃんけんが終了されてしまいます。そこで繰り返し文のwhile(a != x)を使って数値を入力したら終了するように考えているんですが、whileをどこに入れたらいいのかがわかりません・・・
自分でいろんなところに入れて試して見たんですが、無限ループになったりして、終了してくれません。どこにwhileを入れたらいいのでしょうか?それてもwhileじゃないほうがいいのでしょうか?アドバイスお願いします。

投稿日時 - 2007-07-12 01:18:23

QNo.3160124

すぐに回答ほしいです

質問者が選んだベストアンサー

import java.io.*;

class Q3160124
{
public static void main(String[] args) throws IOException{
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));

while(true){ /* 追加 */

System.out.print("あなたの手を入力して下さい。(1:グー、2:チョキ、3:パー、4:終了)?\n");

String str = br.readLine();
int a = Integer.parseInt(str);

if(a == 4){ /* 追加:脱出 */
break;
}

switch(a){
case 1:
System.out.println("あなたの手はグーです。");
break;
case 2:
System.out.println("あなたの手はチョキです。");
break;
case 3:
System.out.println("あなたの手はパーです。");
break;
default:
System.out.println("1~3を入力してください。");
break;
}

{
int ran = ((int)(Math.random()*3)+1);
int b=ran;
switch(b){
case 1:
System.out.println("コンピュータの手はグーです。");
break;
case 2:
System.out.println("コンピュータの手はチョキです。");
break;
case 3:
System.out.println("コンピュータの手はパーです。");
break;

}

int c;
c=a-b;
if(c == 2){
System.out.println("勝ち");
}
else if(c== -1){
System.out.println("勝ち");
}
else if(c==0){
System.out.println("あいこ");
}
else if(c==1){
System.out.println("負け");
}
else {
System.out.println("負け");
}
}
}
}
}

投稿日時 - 2007-07-12 01:36:27

補足

すごい・・・ifだとこんなに簡単にできるんですね。
プログラムをコンパイルしてみて動いてくれてすごくうれしかったです。これに、勝ち??回 負け??回 引き分け??回
っというのをプログラム終了時に表示したいと考えています。
自分の考えはプログラムの中でcが2か-1の時 勝ちに1づつ足すという風に考えているんですが、もしこれをするなら、構文は何をつかったらいいのでしょうか?

投稿日時 - 2007-07-12 18:49:38

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

ジャンケンの処理部分をメソッド化して、
再起プログラムを適用しても実現可能です。
***************************************************************

import java.io.*;

class janken
{

public static void main(String[] args) throws IOException{
Janken_Play();

}

public static void Janken_Play() throws IOException{

BufferedReader br = new BufferedReader(new InputStreamReader (System.in));

System.out.print("あなたの手を入力して下さい。(1:グー、2:チョキ、 3:パー)?\n");

String str = br.readLine();
int a = Integer.parseInt(str);

switch(a){

case 1:
System.out.println("あなたの手はグーです。");
break;

case 2:
System.out.println("あなたの手はチョキです。");
break;

case 3:
System.out.println("あなたの手はパーです。");
break;

default:
System.out.println("1~3を入力してください。");
break;

}

{

int ran = ((int)(Math.random()*3)+1);
int b=ran;

switch(b){
case 1:
System.out.println("コンピュータの手はグーです。");
break;
case 2:
System.out.println("コンピュータの手はチョキです。");
break;
case 3:
System.out.println("コンピュータの手はパーです。");
break;

}

int c;
c=a-b;

if(c == 2){
System.out.println("勝ち");
}
else if(c== -1){
System.out.println("勝ち");
}
else if(c==0){
System.out.println("あいこ");
}
else if(c==1){
System.out.println("負け");
}
else {
System.out.println("負け");
}
}

System.out.print("続行しますか。(続行する場合は1、続行しない場合は任意のキー)?\n");
str = br.readLine();

if(str.equals("1")){
Janken_Play();
}else{
System.out.println("ゲームは終了しました。");
}

}

}

投稿日時 - 2007-07-12 18:22:35

ANo.2

ざっくり申しますと。

このプログラムはすでにジャンケンを1回やるロジックが
完成しており、数回やる、辞めるのルールは、このクラスで
持つべきではないかと思います。

別のじゃんけんゲームクラスを作り、いまの「じゃんけん」クラスは
じゃんけんクラスの「する」というメソッドにします。

で、雰囲気的には、日本語で書くと

=====================================================
じゃんけんゲーム
{
 1じゃんけん = new さっきつくったじゃんけん()
 回答=はい
 ループ開始(回答がいいえになるまで)
  1じゃんけんゲーム.する()
  仮回答 = メッセージ("もう一回ゲームする? Y/N")
  もし仮回答が”Y”ならする、それ以外はしない
 ループ終了
}

じゃんけん
{
 する
 {
  さっきのプログラム
 }
}

こんなんでいいんと違いますかね?

投稿日時 - 2007-07-12 01:42:34