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

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

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

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

Q&A

解決済

2回答

718閲覧

じゃんけんプログラム

Utoshi

総合スコア14

Java

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

0グッド

0クリップ

投稿2018/06/26 04:11

編集2018/06/26 04:21

現在、クラスとメソッドの勉強の為にじゃんけんのプログラムを書いています。
仕様は・・・
1:playerクラスとJankenクラスに分ける
2:playerクラスには
・プレイヤー名とじゃんけんの手
・引数で受け取った値をプレイヤー名に設定
・出す手をランダムに決める
3:Jankenクラスには
メインメソッド
・2名のプレイヤー
・それぞれのプレイヤーの手を確認
・結果を確認
になります

※今詰まっている点はランダムで手を決めてメインメソッドに値を返したいのですがうまくいかずにnullのままになってしまいます。


以下は今現在のソースです

Janken.java

import java.util.Random; public class EX2_02_1_Janken { public static void main(String[] args){ //2名のプレイヤー表示 EX2_02_1_Player pl1 = new EX2_02_1_Player(args[0],null); EX2_02_1_Player pl2 = new EX2_02_1_Player(args[1],null); System.out.println("プレイヤー1:" +pl1.name); System.out.println("プレイヤー2:" +pl2.name); //それぞれのプレイヤーに手を握らせる System.out.println("じゃんけん・・・・ぽん!!!"); //それぞれの手を確認する System.out.println(pl1.name+"の手は"+pl1.handStatus); System.out.println(pl2.name+"の手は"+pl2.handStatus); //お互いの手の判定 //pl1 /*if(==0) { System.out.println("pl1はグー"); }else if(==1) { System.out.println("pl1はチョキ"); }else if(==2) { System.out.println("pl1はパー"); } //pl1 if(==0) { System.out.println("pl2はグー"); }else if(==1) { System.out.println("pl2はチョキ"); }else if(==2) { System.out.println("pl2はパー"); }*/ //結果 } }

player.java

import java.util.Random; public class EX2_02_1_Player { //プレイヤーinfの宣言 String name; String handStatus; //じゃんけんのグーチョキパーを定数として宣言 String gu ; String tyoki ; String pa ; //プレイヤーの名前と出し手(初期)を設定 EX2_02_1_Player(String nm, String hS){ name = nm; handStatus = hS; } //メソッド:ランダムで出す手を決める public String makeHandStatus() { //Randomクラスのインスタンス化 Random rnd = new Random(); int ran = rnd.nextInt(2); String[] s = {"グー","チョキ","パー"}; System.out.println(s[rnd.nextInt(3)]); return handStatus ; } }

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

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

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

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

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

m.ts10806

2018/06/26 04:15

プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
guest

回答2

0

ベストアンサー

EX2_02_1_Player pl1 = new EX2_02_1_Player(args[0],null);

↑じゃんけんクラスでのプレイヤーインスタンス生成部分。
2つ目の引数にnullを指定してます。

//プレイヤーの名前と出し手(初期)を設定 EX2_02_1_Player(String nm, String hS){ name = nm; handStatus = hS; }

↑プレイヤークラスのコンストラクタ。
2つ目の引数をメンバー変数「handStatus」にセットしてるので、handStatus==nullです。

//それぞれの手を確認する System.out.println(pl1.name+"の手は"+pl1.handStatus);

↑じゃんけんクラスではプレイヤーインスタンス生成後、メンバー変数handStatusを参照してますが、上記の理由でnullのままです。

ランダムで手を決めてメインメソッドに値を返したい

↑プレイヤークラスの「makeHandStatus()」メソッドがどこからも参照されてないので、じゃんけんの手を決定するところで呼び出せばよいでしょう。

追記

参考にコードを

↑そこは自分で学習して身に付けるところだとは思いますが。。。

java

1// プレイヤークラス側 2 3//メソッド:ランダムで出す手を決める 4public String makeHandStatus() { 5 // 前半部分省略 6 String[] s = {"グー","チョキ","パー"}; 7 this.handStatus = s[rnd.nextInt(3)]; // <-- 例えばここでメンバ変数にセットする。 8 return handStatus ; 9}

java

1// じゃんけんクラス側 2 3//2名のプレイヤー表示 4EX2_02_1_Player pl1 = new EX2_02_1_Player(args[0],null); 5pl1.makeHandStatus(); // <--------------------- ここでメソッド実行して、じゃんけんの手を決める。

投稿2018/06/26 04:23

編集2018/06/26 04:38
tkturbo

総合スコア5572

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

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

Utoshi

2018/06/26 04:28

回答ありがとうございます。 オブジェクト指向の学習になってから、混乱するばかりで、tkturboさんの言っていることが、理解できるようで理解できておりません。 もしよろしければ、参考にコードを書いていただくことは出来ないでしょうか?
Utoshi

2018/06/26 04:45

ありがとうございます。 確かに自分で考えて書かないと身につかないと思いますので、オブジェクト指向をもう一度しっかりと学びたいと思います・・・・
guest

0

handStatus変数は、makeHandStatusメソッドでは書き換えていないので誰も値を設定していないのであれば、
必然的にnullが返されると思います。
細かいところまでは見ていませんが、まずはその辺りから確認してみてはいかがでしょうか。

投稿2018/06/26 04:23

YasuhiroMiyake

総合スコア1336

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問