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

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

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

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

解決済

たくさんあるエラーを解決したい

Alpa
Alpa

総合スコア0

Java

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

1回答

-1評価

0クリップ

5閲覧

投稿2018/10/20 07:17

編集2022/01/12 10:58

前提・実現したいこと

同じパッケージ内のクラスを使いたいが
19個エラーが出てしまっているのでどうにかしたい

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

同じパッケージ内のクラスがインスタンス化できない
パッケージをつける前はコンパイルも通り実行できました

試したこと

・パッケージ名を変えた
・パッケージ名がクラス名と被らないようにした
・public修飾子をクラスにつけた
・インポートをした

下のコードは実際に書いたコードです
このほかのクラスも同じパッケージにしています
エラーが発生する場所はFileOperationクラスの作成とMapクラスの作成や使用の部分です

java

package terraria.game; import terraria.game.*; import javax.swing.*; import javax.swing.Timer; import javax.imageio.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.util.*; import java.io.*; public class Terraria extends JFrame implements ActionListener, KeyListener, MouseMotionListener, MouseListener { //処理の段階分けの列挙型 enum STATUS{ INIT, TITLE, GAME } STATUS status = STATUS.INIT; //画面のダブルバッファリング関係 BufferedImage buff = new BufferedImage(700, 500, BufferedImage.TYPE_4BYTE_ABGR_PRE); Graphics2D g2 = buff.createGraphics(); //キー入力の処理を行うタイマー Timer keyTimer = new Timer(10, this); //ファイル操作クラス FileOperation file = new FileOperation(); //マップデータを格納したコレクション ArrayList<Map> map = new ArrayList<Map>(); //キー入力フラグ boolean key_up = false; boolean key_down = false; boolean key_right = false; boolean key_left = false; boolean key_enter = false; boolean key_space = false; //ウィンドウに入ったか判定するフラグ boolean windowIn = false; //マウスの座標 int mouseX = 0; int mouseY = 0; //マップデータを格納したコレクションの要素数 int mapSize = map.size(); public static void main(String[] args) { Terraria frame = new Terraria(); frame.setTitle("テラリア"); frame.setSize(700, 500); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setResizable(false); frame.setAlwaysOnTop(false); frame.setVisible(true); } Terraria() { JPanel panel = new JPanel(); panel.setLayout(null); addKeyListener(this); addMouseMotionListener(this); addMouseListener(this); keyTimer.setActionCommand("キー入力"); getContentPane().add(panel, BorderLayout.CENTER); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); switch(cmd){ case "キー入力":{ //キー入力処理を実行 keyProcessing(); }break; } } public void paint(Graphics g) { g2 = buff.createGraphics(); switch(status){ case INIT:{ if(!file.fileCheck("./SeveData")){ file.makeDir("./SeveData"); System.exit(0); } //背景色を白に設定 g2.setBackground(Color.white); //マップを読み込む loadMap(); //キー入力処理のタイマーを開始 keyTimer.start(); //タイトル画面に遷移 status = STATUS.TITLE; repaint(); }break; case TITLE:{ //画面を初期化 clearBack(); }break; case GAME:{ //画面を初期化 clearBack(); for(int i = 0; i < mapSize; i++){ if(map.get(i).mapChipNumber == 1){ g2.setColor(Color.green); }else if(map.get(i).mapChipNumber == 2){ g2.setColor(Color.blue); } g2.fillRect(map.get(i).x, map.get(i).y, 10, 10); } }break; } g.drawImage(buff, 0, 0, this); g2.dispose(); } public void keyReleased(KeyEvent e) { switch(e.getKeyText(e.getKeyCode())){ case "上": key_up = false; break; case "下": key_down = false; break; case "右": key_right = false; break; case "左": key_left = false; break; case "Enter": key_enter = false; break; case "スペース": key_space = false; break; } } public void keyPressed(KeyEvent e) { switch(e.getKeyText(e.getKeyCode())){ case "上": key_up = true; break; case "下": key_down = true; break; case "右": key_right = true; break; case "左": key_left = true; break; case "Enter": key_enter = true; break; case "スペース": key_space = true; break; } } public void keyTyped(KeyEvent e){} public void mouseMoved(MouseEvent e) { if(windowIn){ Point point = e.getPoint(); mouseX = point.x; mouseY = point.y; } } public void mouseDragged(MouseEvent e) { if(windowIn){ Point point = e.getPoint(); mouseX = point.x; mouseY = point.y; int index = getMapIndex(mouseX, mouseY); if(index != -1){ debug("I: " + index + " X: " + map.get(index).x + " Y: " + map.get(index).y + " L: " + map.get(index).layer + " M: " + map.get(index).mapChipNumber); } } } public void mouseClicked(MouseEvent e) { if(windowIn){ int btn = e.getButton(); switch(btn){ case MouseEvent.BUTTON1:{ int index = getMapIndex(mouseX, mouseY); if(index != -1){ debug("Index番号: " + index); debug("X座標: " + map.get(index).x); debug("Y座標: " + map.get(index).y); debug("Layer: " + map.get(index).layer); debug("MapCN: " + map.get(index).mapChipNumber); } }break; case MouseEvent.BUTTON2:{ //中クリックした時の処理 }break; case MouseEvent.BUTTON3:{ //右クリックした時の処理 }break; } if(e.getClickCount() >= 2){ //ダブルクリックした時の処理 } } } public void mouseEntered(MouseEvent e) { windowIn = true; } public void mouseExited(MouseEvent e) { windowIn = false; } public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} void clearBack() { //画面の初期化処理 g2.setColor(Color.white); g2.fillRect(0, 0, 700, 500); } void keyProcessing() { if(key_up){ } if(key_down){ } if(key_right){ } if(key_left){ } if(key_enter){ if(status == STATUS.TITLE){ //ゲーム画面に切り替え status = STATUS.GAME; repaint(); } } if(key_space){ } } void loadMap() { //マップデータを1行ずつ読み込んで格納するコレクション ArrayList<String> mapData = new ArrayList<String>(); //マップデータの読み込み file.readS2("./SeveData/Test/TestMapData.txt", mapData); //読み込んだマップデータの要素数を数値化 int mapDataSize = mapData.size(); //[,]で分割してマップデータを作成し格納 for(int i = 0; i < mapDataSize; i++){ String[] strs = mapData.get(i).split(",", 0); for(int j = 0; j < strs.length; j++){ map.add(new Map((j * 10) + 10, (i * 10) + 31, 0, Integer.parseInt(strs[j]))); } } //マップデータの要素数を更新 mapSize = map.size(); } int getMapIndex(int x, int y) { for(int i = 0; i < mapSize; i++){ if((x >= map.get(i).x && x <= map.get(i).x + 10) && (y >= map.get(i).y && y <= map.get(i).y + 10)){ return i; } } return -1; } void debug(Object obj) { System.out.println(obj); } }

エラー

Terraria.java:32: エラー: シンボルを見つけられません FileOperation file = new FileOperation(); シンボル: クラス FileOperation 場所: クラス Terraria Terraria.java:128: エラー: シンボルを見つけられません if(map.get(i).mapChipNumber == 1){ シンボル: 変数 mapChipNumber 場所: インタフェース Map Terraria.java:293: エラー: Mapはabstractです。インスタンスを生成することはできません map.add(new Map((j * 10) + 10, (i * 10) + 31, 0, Integer.parseInt(strs[j]))); 同じようなエラーは文字数制限の都合上削除しました エラー19個

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

Javaのバージョン 10.0.2

ファイル配置
Aというフォルダの中にBというフォルダがありそのBの中にクラスファイルがあります

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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