質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1895閲覧

継承について

prog1717nm

総合スコア56

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/11/11 11:41

import java.util.*; class Janken3 extends Janken1{ public static void main(String[] args){ boolean cont = true; while(cont){ int wc=0, wh=0; while(wc<3 && wh<3) { Janken1 j1 = new Janken1(); int r = j1.play1(); if(r==1) wc++; else if(r==2) wh++; } if(wh==3) System.out.println("3勝"+wc+"敗で人の勝ちです。" ); else System.out.println("3勝"+wh+"敗でコンピュータの勝ちです。"); } } } class Janken1 { static Scanner stdIn = new Scanner(System.in); static String[] name = { "人","コンピュータ"}; Random rand = new Random(); public static void main(String[] args) { Janken1 j1 = new Janken1(); int r = j1.play1()-1; System.out.println(name[r]+"の勝ち"); } int play1() { // 関数値で勝者を返す 1:人 2:コンピュータ String[] hand={"グー", "テョキ","パー"}; int r; do { int c = rand.nextInt(3); System.out.print("手(0:グー/ 1: テョキ/ 2:パー) ? "); int h = stdIn.nextInt(); System.out.println(name[0]+hand[h]); System.out.println(name[1]+hand[c]); r = (c+3-h)%3; if(r==0) System.out.println("あいこ"); } while(r==0); return r; } }

上のプログラムはじゃんけんを行って先に3回勝った方を勝ちとするプログラム、、、のはずなんですが1回勝ったら勝ちになってしまいます。Janken1クラスは1回ごとのじゃんけんの勝敗を表していて、Janken3クラスは3回先勝を表しています。必ずJanken1クラスを継承してJanken3クラスをつくらなければなりません。どこを直したら良いか教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

実行するときに
java Janken3
していますか?

java Janken1
としていると一回勝てば終わりますね。

あとJanken3の結果表示が実際の勝負の内容と異なってるように思えます。

投稿2016/11/11 11:49

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

継承してるのであれば、
Janken1 j1 = new Janken1();
このインスタンス化は必要なく、
int r = j1.play1();
は、
int r = play1();
で、返ってくるのではないですかね?

投稿2016/11/11 11:56

akio221

総合スコア716

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

carimatics

2016/11/11 12:32

play()はインスタンスメソッドなのでインスタンスは必要ですね。
akio221

2016/11/11 12:43

と・・。失礼しました・・。(。。;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問