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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

1回答

1269閲覧

キーボード入力した文字を他のクラス内でも取得したい。

TaTsu000

総合スコア4

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/11/30 14:27

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)java(Eclipse)でじゃんけんをするというシステムを作っています。
メインのクラス内で入力した文字を他のクラスでも同じ文字で処理できるような機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at chukan.main(chukan.java:14)

該当のソースコード

java(chukan.java)・・・1つ目のクラス

1import java.util.Random; 2import java.util.Scanner; 3 4public class chukan{ 5 public static void main(String[] args) { 6 Hand Me=new Hand(); 7 Hand You=new Hand(); 8 Judge judge=new Judge(Me,You); 9 Random rand=new Random(); 10 Scanner stdln=new Scanner(System.in); 11 12 judge.Start(); 13 while(true) { 14 int input =stdln.nextInt(); 15 You.KHand(input); 16 if(Me.hand()==Hand.RANSUU) { 17 return; 18 } 19 judge.ponsho(); 20 Me.RHand(rand); 21 judge.judge(); 22 judge.Results(); 23 } 24 } 25} 26 27(Hand.java)・・・・・・・・・・・・2つ目のくらす・・・・・・ 28import java.util.Random; 29 30public class Hand{ 31 public static final int ROCK=1; 32 public static final int SCISSORS=2; 33 public static final int PAPER=3; 34 public static final int RANSUU=-1; 35 private final int KEY_START=103; 36 private final int KEY_IN=99; 37 private final int KEY_CHANGE=112; 38 private int inkey; 39 private int hand; 40 41 public void RHand(Random random) { 42 this.hand=random.nextInt(3)+1; 43 } 44 public void KHand(int inkey) { 45 int key=LKey(inkey); 46 switch(key) { 47 case KEY_START: 48 this.hand=ROCK; 49 return; 50 case KEY_IN: 51 this.hand=SCISSORS; 52 return; 53 case KEY_CHANGE: 54 this.hand=PAPER; 55 return; 56 default: 57 this.hand=RANSUU; 58 return; 59 } 60 } 61 private int LKey(int key) { 62 if(key<KEY_IN) { 63 return key+32; 64 } 65 return key; 66 } 67 public String toString() { 68 switch(hand) { 69 case ROCK: 70 return "ぐー!"; 71 case PAPER: 72 return "ぱー!"; 73 case SCISSORS: 74 return "ちょき!"; 75 default: 76 return "KEYが違います!G=ぐー P=ぱー C=ちょき"; 77 } 78 } 79 public int hand() { 80 return hand; 81 } 82} 83 84(Judge.java)・・・・・・・・・3つ目のクラス・・・・・・ 85public class Judge{ 86 private enum Result{ 87 RESULT_WIN, 88 RESULT_LOSE, 89 RESULT_EVEN 90 } 91 private Hand myHand; 92 private Hand youHand; 93 private Result result; 94 95 public Judge(Hand youHand,Hand myHand) { 96 this.youHand=youHand; 97 this.myHand=myHand; 98 this.result=Result.RESULT_LOSE; 99 } 100 public void Start() { 101 System.out.println("じゃんけんスタート!"); 102 System.out.println("G:ぐー!,C:ちょき!,P:ぱー!,終了はそれ以外"); 103 System.out.println("G/C/Pのどれかを選んでEnterキーを押して下さい。"); 104 System.out.println("じゃーんけーん"); 105 } 106 public void ponsho() { 107 switch(result) { 108 case RESULT_WIN: 109 case RESULT_LOSE: 110 System.out.println("ぽん!"); 111 break; 112 case RESULT_EVEN: 113 System.out.println("しょ!"); 114 break; 115 } 116 } 117 public void Results(){ 118 System.out.println("あいては"+youHand.toString()+"→"); 119 System.out.println("わたしは"+myHand.toString()); 120 switch(result) { 121 case RESULT_WIN: 122 System.out.println("あなたの勝ちです。"); 123 System.out.println("じゃーんけーん!"); 124 break; 125 case RESULT_LOSE: 126 System.out.println("あなたの負けです。"); 127 System.out.println("じゃーんけーん!"); 128 break; 129 case RESULT_EVEN: 130 System.out.println("あいこで、"); 131 break; 132 } 133 } 134 public void judge() { 135 this.result=judgeRule(); 136 } 137 private Result judgeRule() { 138 if(youHand.hand()==myHand.hand()) { 139 return Result.RESULT_EVEN; 140 } 141 switch(youHand.hand()) { 142 case Hand.ROCK: 143 if(myHand.hand()==Hand.SCISSORS) { 144 return Result.RESULT_WIN; 145 } 146 break; 147 case Hand.SCISSORS: 148 if(myHand.hand()==Hand.PAPER) { 149 return Result.RESULT_WIN; 150 } 151 break; 152 case Hand.PAPER: 153 if(myHand.hand()==Hand.ROCK) { 154 return Result.RESULT_WIN; 155 } 156 break; 157 default: 158 break; 159 } 160 return Result.RESULT_LOSE; 161} 162}

試したこと

chukan.java(1つ目のクラス)のYou.KHand(input);をHand KHand=new KHand(input);に変えるなどして試してみました。

補足情報(FW/ツールのバージョンなど)

Version(4.8.0)

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

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

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

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

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

ngsvx

2019/11/30 14:45

エラーメッセージの意味を理解しようとしましたか?
TaTsu000

2019/11/30 14:50

You.KHand(input)の中身がUnknownになっているのでnextInt()で入力してもどこに入ったら良いかわからないと理解していました。
ngsvx

2019/11/30 15:37

ということは、エラーメッセージの意味は理解していないということですね。 まずは、エラーメッセージが何を意味しているのかを調べて下さい。
TaTsu000

2019/11/30 15:39

ありがとうございます!エラーメッセージの理解から始めます!
ngsvx

2019/11/30 15:44

ちなみに、読み方はわかりますか?
TaTsu000

2019/11/30 15:44

自分で調べるので大丈夫です!
ngsvx

2019/11/30 15:52

では、頑張って下さい。
guest

回答1

0

java

1 int input =stdln.nextInt();

nextInt() で 次の整数をよこせ と言ってるのに、

G/C/Pのどれかを選んでEnterキーを押して下さい。

と表示されるので数字を入力しようとは思わないです。
1 か 2 か 3 を入力すれば動きます。

投稿2019/12/01 00:16

編集2019/12/01 00:21
shiracamus

総合スコア5406

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問