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

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

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

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

Q&A

解決済

1回答

10111閲覧

java初心者 Integer シンボルが見つけられない

logos

総合スコア7

Java

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

0グッド

0クリップ

投稿2018/03/06 12:04

前提・実現したいこと

java初心者です。
プレイヤーとCPUでじゃんけんをし、
結果を判定できるようにしたいです。

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

int res = Integer.parseInt(str); がうまく機能しません。resがなぜか変数として宣言できていないようです。 Janken1.java:35: エラー: シンボルを見つけられません case 1:if(res == gu){ ^ シンボル: 変数 res 場所: クラス Janken1 Janken1.java:37: エラー: シンボルを見つけられません else if(res == choki){

該当のソースコード

java

1import java.io.*; 2 3class Janken1 4{ 5 public static void main(String[] args) 6 { 7 8 final int gu = 1; 9 final int choki = 2; 10 final int pa = 3; 11 System.out.println("じゃんけんしよう!"); 12 System.out.println("「gu」「choki」「pa」を打ち込んでください"); 13 14 try{ 15 BufferedReader br = 16 new BufferedReader 17 (new InputStreamReader(System.in)); 18 19 String str = br.readLine(); 20 int res = Integer.parseInt(str); 21 System.out.println("あなたが出したのは「" +str+ "」です。"); 22 } 23 catch(IOException e){ 24 System.out.println("入力エラーです。" ); 25 } 26 int num = (int) (Math.random()*3)+1; 27 if(num == 1 ){ 28 System.out.println("私が出したのは「gu」です!!"); 29 }else if(num == 2){ 30 System.out.println("私が出したのは「choki」です!!"); 31 }else if(num == 3){ 32 System.out.println("私が出したのは「pa」です!!"); 33 } 34 switch(num){ 35 case 1:if(res == gu){ 36 System.out.println("あいこです。");} 37 else if(res == choki){ 38 System.out.println("あなたの負けです。");} 39 else if(res == pa){ 40 System.out.println("あなたの勝ちです。");} 41 break; 42 case 2:if(res == gu){ 43 System.out.println("あなたの勝ちです。");} 44 else if(res == choki){ 45 System.out.println("あいこです。");} 46 else if(res == pa){ 47 System.out.println("あなたの負けです。");} 48 break; 49 case 3:if(res == gu){ 50 System.out.println("あなたの負けです。");} 51 else if(res == choki){ 52 System.out.println("あなたの勝ちです。");} 53 else if(res == pa){ 54 System.out.println("あいこです。");} 55 break; 56 } 57 } 58} 59

試したこと

resを他の単語に変えましたが、意味がなかったです。

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

やさしいjavaを参考にしています。他にもおかしなところがあればご指摘いただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

スコープが異なるからですね。
平たく言えば、{}の内側で宣言された変数は、その外側では使えません。

と、言うわけで、tryより前にresを宣言・適当な値に初期化してください。

投稿2018/03/06 12:13

LouiS0616

総合スコア35660

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

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

logos

2018/03/06 13:09

回答ありがとうございます。tryより前にresを宣言・適当な値に初期化というのをもう少し詳しく教えていただけませんか?
LouiS0616

2018/03/06 13:14

try文の直前に int res = 1; と書いておいて、 tryの内側では res = Integer.parseInt(str); とすればよいです。
logos

2018/03/06 13:17

ありがとうございます。tryの内側をint resにしてしまっていました。 コンパイルが成功して一歩前進できました。
退会済みユーザー

退会済みユーザー

2018/03/06 13:46

LouiS0616 int res = 1 とかいちゃうと 入力エラーです。 私が出したのは「choki」です!! あなたの勝ちです。 という反則勝ちを指摘しないといけないではないか
LouiS0616

2018/03/06 13:51

@asahina1979 さん 握りつぶしちゃってますからね。 @logos さん と言うわけで、例外時はreturnするなどした方が良いです。 IOExceptionを無視して処理を続行するのは無理がありますので。
logos

2018/03/12 16:00

ご助言ありがとうございます。例外時についてもう少し勉強しようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問