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

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

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

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

Q&A

解決済

2回答

1698閲覧

以下のコードを書いた際にchoiceでエラーが発生する

MasakiSakamoto

総合スコア13

Java

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

0グッド

0クリップ

投稿2016/10/16 20:23

編集2016/10/16 20:26

エラーメッセージでは"シンボルを見つけられません"と表記されます
僕は最終的にローカル変数"choice"を作成しこの問題を解決しましたが本来はどのようにこのエラーに対処するのかが知りたいのでご教授お願いします。
P.S.開発環境はNetBeans IDE 8.1 です

java

1public class Week7 { 2 3 private static int choice; 4 5 /** 6 * @param args the command line arguments 7 */ 8 public static void main(String[] args) 9 { 10 // Tally program 11 12 // Present the user with a menu 13 // to enter a number between 1-4 inclusive 14 // Whichever number gets entered, we keep 15 // a count (tally) of how many times 16 // they enter theat number 17 // Repeat this untill the user enters "5" 18 // to show the tally and then end the 19 // program 20 21 Scanner input = new Scanner(System.in); 22 int count1 = 0; 23 int count2 = 0; 24 int count3 = 0; 25 int count4 = 0; 26 int choce; 27 28 do 29 { 30 System.out.println("1) Record 1"); 31 System.out.println("2) Record 2"); 32 System.out.println("3) Record 3"); 33 System.out.println("4) Record 4"); 34 System.out.println("5) Show tally"); 35 System.out.print("\nEnter choice: "); 36 37 choice = input.nextInt(); 38 39 /* 40 if (choice == 1) 41 count1++; 42 else if (choice == 2) 43 count2++; 44 else if (choice == 3) 45 count3++; 46 else if (choice == 4) 47 count4++; 48 else 49 { 50 System.out.println(count1); 51 System.out.println(count2); 52 System.out.println(count3); 53 System.out.println(count4); 54 } 55 */ 56 // If I have one variable to test 57 // and am testing it with a fixed 58 // set of values, we can write 59 // the code using a switch 60 61 switch (choice) 62 { 63 case 1: 64 count1++; 65 break; 66 case 2: 67 count2++; 68 break; 69 case 3: 70 count3++; 71 break; 72 case 4: 73 count4++; 74 break; 75 default: 76 System.out.println(count1); 77 System.out.println(count2); 78 System.out.println(count3); 79 System.out.println(count4); 80 break; 81 } 82 } while (choice != 5); 83 } 84 85} 86

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

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

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

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

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

guest

回答2

0

エラーメッセージでは"シンボルを見つけられません"と表記されます

本来でしたら、エラーが出た時点のソースを保存しておいて、
質問文で貼付してください。回答者側には分かりにくいので。
(たまたま今回は、エラーの原因を見つけてしまいましたが)


本来はどのようにこのエラーに対処するのかが知りたい

「シンボルを見つけられません」というエラーメッセージは、
未定義の変数などを使ったときに出るものです。

今回の場合はおそらく、int choce;スペルミスでしょうね。
つまり、「choice」の**「i」が足りない**から、エラーなんでしょう。

ソースへの愛が足りないと、エラーやバグもはびこるので、
たとえばリファクタリングして、コードを単純化します。

下記は一例で、良いかどうかは別にして、短くはなってます。

ただ、ここまで切り詰めなくても、元ソースのコメントを
別ドキュメントに分けるだけで、十分見やすくなるかも。

java

1import java.util.Scanner; 2 3public class Week7 { 4 5 public static void main(String[] args) { 6 7 Scanner input = new Scanner(System.in); 8 int choice = 0; 9 int count[] = new int[5]; 10 11 System.out.println("1) Record 1 \n2) Record 2 \n3) Record 3 \n4) Record 4"); 12 System.out.println("5) Show tally"); 13 14 while (choice != 5) { 15 System.out.print("\n Enter choice: \n"); 16 choice = input.nextInt(); 17 18 if ((0 < choice) && (choice < 5)) count[choice]++; 19 20 if (choice == 5) { 21 for (int num: count) { 22 if (num != 0) System.out.println(""+num); 23 } 24 } 25 } 26 } 27}

投稿2016/10/16 22:21

編集2016/10/16 22:56
LLman

総合スコア5592

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

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

MasakiSakamoto

2016/10/17 06:23

わざわざ例までしていただきありがとうございます。参考になりました。
guest

0

ベストアンサー

このエラーメッセージならば、当該語句(ここでは「choice」)が定義されていないはずです。予約語でもないですし、特定のライブラリで使われているものでもなさそう(全て小文字の場合は「通常の変数」である場合が多い)です。

本件の場合は普通にローカル変数定義でいいとは思いますよ。まあプログラム作成者が別にいるならばその人に聞くなりすればいいですが。

投稿2016/10/16 22:15

HogeAnimalLover

総合スコア4830

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

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

MasakiSakamoto

2016/10/17 06:24

この回答が一番自分にはしっくりきました。ご回答していただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問