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

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

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

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

1946閲覧

シンボルを見つけられませんとエラーが出ますが、原因がわかりません。

TOMATO1235

総合スコア2

Java

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2021/08/12 09:45

前提・実現したいこと

Javaで神経衰弱のゲームを作っています。プレイヤー人数は一人で、トランプの枚数は四枚にするつもりです。
そこで、今コンパイルエラーに対処しているのですが、「シンボルを見つけられません」というエラーが大量に出てしまい困っています。
同じ階層に設置している別のjavaファイルから変数などを読み込んでいるのですが、どうすれば上手く実行できるのでしょうか?

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

D:\JavaGame0\neurasthenia>jc D:\JavaGame0\neurasthenia>javac *.java NEPanel.java:60: エラー: シンボルを見つけられません if (point != trumps.length / 2) { ^ シンボル: 変数 trumps 場所: クラス NEPanel.NEMouseAdapter ... NEPanel.java:72: エラー: シンボルを見つけられません if (counter2Memo == 0) { ^ シンボル: 変数 counter2Memo 場所: クラス NEPanel.NEMouseAdapter ... NEPanel.java:103: エラー: シンボルを見つけられません panel.remove(clear); ^ シンボル: 変数 clear 場所: クラス NEPanel.NEMouseAdapter ... Trump.java:39: エラー: シンボルを見つけられません picture = card_back.png; ^ シンボル: 変数 card_back 場所: クラス Trump ... Trump.java:53: エラー: シンボルを見つけられません imageIcon icon = new imageIcon(picture); ^ シンボル: クラス imageIcon 場所: クラス Trump ... Trump.java:72: エラー: シンボルを見つけられません panel.remove(name); ^ シンボル: 変数 panel 場所: クラス Trump Trump.java:78: エラー: シンボルを見つけられません this.number = number; ^ シンボル: 変数 number エラー36個

該当のソースコード

NEFrame.java

java

1 2import java.awt.*; 3import javax.swing.*; 4import java.util.*; 5 6/** 7 * HelloJavaGame 8 */ 9public class NEFrame extends JFrame{ 10 11 public static NEPanel panel = null; 12 13 public static Trump[] trumps = new Trump [4]; 14 15 /** 16 * ここからはじまります。*/ 17 18 19 public static void main(String[] args){ 20 NEFrame hg = new NEFrame(); 21 22 int q; 23 int w = 0; 24 for (q = 0; q <= trumps.length / 2; q++) { 25 trumps[w] = new Trump (q, "a" + String.valueOf(w)); 26 w++; 27 trumps[w + 1] = new Trump (q, "a" + String.valueOf(w)); 28 w++; 29 } 30 31 32 addTrump(); 33 } 34 35 public static void addTrump() { 36 37 38 for (int e = trumps.length - 1; e > 0; e--) { 39 int r = (int) (Math.random() * (e + 1)); 40 Trump tmp = trumps[e]; 41 trumps[e] = trumps[r]; 42 trumps[r] = tmp; 43 } 44 int u; 45 for (u = 0; u <= trumps.length; u++) { 46 u--; 47 trumps[u].startAdd(); 48 u++; 49 } 50 51 } 52 public static void clear() { 53 54 JLabel clear = new JLabel("クリア"); 55 56 clear.setFont(new Font("MS ゴシック", Font.BOLD, 24)); 57 58 panel.add(clear); 59 60 clear.setBounds(1000, 1000, 3000, 300); 61 62 panel.resetPoint(); 63 64 int i; 65 for (i = 0; i < trumps.length; i++) { 66 i--; 67 trumps[i].disappear(); 68 i++; 69 } 70 71 addTrump(); 72 } 73 74 75 76 77 /** 78 * コンストラクタ 79 */ 80 public NEFrame(){ 81 82 // フレームを生成 83 JFrame frame = new JFrame("neurasthenia"); 84 85 // ×ボタンが押されたら、終了する 86 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 87 // レイアウト設定 88 frame.setLayout(new BorderLayout()); 89 90 // パネルを生成 91 JPanel panel = new JPanel(); 92 93 // パネルサイズを設定 94 panel.setPreferredSize(new Dimension(1024, 640)); 95 // レイアウト設定 96 panel.setLayout(null); 97 98 // フレームにパネルを設定 99 frame.setContentPane(panel); 100 101 102 // フレームを表示 103 frame.setVisible(true); 104 // サイズを最適化する 105 frame.pack(); 106 107 } // end HelloJavaGame 108 109 110 111 112 113} 114 115 116

NEPanel.java

java

1import java.awt.*; 2import java.awt.event.*; 3import javax.swing.*; 4 5/** 6 * パネルクラス 7 */ 8public class NEPanel extends JPanel { 9 10 private NEMouseAdapter mgma = null; 11 12 private int x = 0; 13 private int y = 0; 14 15 public static int point = 0; 16 17 int counter2 = 0; 18 19 int counter2Pre = 0; 20 21 /** 22 * コンストラクタ 23 */ 24 public NEPanel() { 25 26 // スーパークラスを呼び出す 27 super(); 28 29 // パネルサイズ 30 super.setPreferredSize(new Dimension(800, 600)); 31 // レイアウト設定 32 super.setLayout(null); 33 34 // マウスアダプタを生成 35 mgma = new NEMouseAdapter(); 36 // パネルにマウスリスナーを追加する 37 super.addMouseListener(mgma); 38 39 } // end MGPanel 40 41 public static void resetPoint() { 42 43 point = 0; 44 45 } 46 47 48 /** 49 * マウスアダプタ 50 */ 51 private class NEMouseAdapter extends MouseAdapter { 52 53 /** 54 * マウスがクリックされた時に呼ばれます 55 */ 56 57 58 public void mouseClicked(MouseEvent me){ 59 60 if (point != trumps.length / 2) { 61 62 // 場所を記憶する 63 x = me.getX(); 64 y = me.getY(); 65 66 for (counter2 = 0; counter2 <= trumps.length; counter2++) { 67 68 if (x >= trumps[counter2].counterMemo * 200 - 200 && x <= trumps[counter2].counterMemo * 200 && y >= trumps[counter2].positionMemo * 100 - 293 && y <= trumps[counter2].position * 100) { 69 70 trumps[counter2].reverse(); 71 72 if (counter2Memo == 0) { 73 74 counter2Memo = counterMemo; 75 76 }else{ 77 78 if (trumps[counter2Memo].number == trumps[counter2].number) { 79 80 trumps[counter2].disappear(); 81 trumps[counter2Memo].disappear(); 82 83 point++; 84 85 if (point == trumps.length / 2) { 86 87 clear(); 88 89 } 90 }else{ 91 92 trumps[counter2].reverse(); 93 trumps[counter2Memo].reverse(); 94 95 96 } 97 counter2Memo = 0; 98 } 99 } 100 } 101 }else{ 102 103 panel.remove(clear); 104 105 } 106 107 } // end mouseClicked 108 109 } // end NEMouseAdapter 110 111} 112

Trump.java

java

1import java.util.*; 2import javax.swing.*; 3 4public class Trump { 5 6 static int counter; 7 8 static int position = 1; 9 10 int direction; 11 12 int Number; 13 14 String name; 15 16 int counterMemo; 17 18 int positionMemo; 19 20 String picture; 21 22 public void startAdd() { 23 24 counter++; 25 26 if (counter <= 2) { 27 position++; 28 counter--; 29 } 30 31 counterMemo = counter; 32 positionMemo = position; 33 add(); 34 } 35 36 public void add() { 37 38 if (direction == 0) { 39 picture = card_back.png; 40 direction = 1; 41 }else{ 42 switch (this.number) { 43 case 1: 44 picture = card_spade_01.png; 45 break; 46 case 2: 47 picture = card_spade_02.png; 48 break; 49 } 50 direction = 0; 51 } 52 53 imageIcon icon = new imageIcon(picture); 54 55 JLabel name = new JLabel(icon); 56 57 panel.add(label3); 58 59 label3.setBounds(counterMemo * 200, position * 100, 200, 293); 60 61 } 62 63 public void reverse() { 64 65 disappear(); 66 67 add(); 68 } 69 70 public void disappear() { 71 72 panel.remove(name); 73 74 } 75 76 Trump(int number, String name) { 77 78 this.number = number; 79 80 this.name = name; 81 82 } 83 84}//endturmp 85 86

試したこと

  • JFrameのmainメソッドのtrump配列をmainメソッド外に移す。

→「式の開始が不正です」等の別のエラーが出てきて上手くいきませんでした。

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

ファイル構成としては、以下のJavaファイルと画像を一つのフォルダ内に設置してコンパイル実行しています。

NEPanel.java
NEFrame.java
Trump.java
card_back.png
card_spade_01.png
card_spade_02.png

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

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

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

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

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

guest

回答1

0

ベストアンサー

同じ階層に設置している別のjavaファイルから変数などを読み込んでいるのですが

何も書かずにそんなことはできません。staticな変数であれば、NEFrame.trumpsのようにクラス名を付けて参照することは可能です。

投稿2021/08/12 11:12

maisumakun

総合スコア145123

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

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

TOMATO1235

2021/08/12 12:32

ありがとうございます、早速試してみます。
TOMATO1235

2021/08/13 00:36

ありがとうございます、解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問