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

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

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

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

Q&A

解決済

1回答

561閲覧

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

Alpa

総合スコア80

Java

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

0グッド

0クリップ

投稿2018/10/20 07:17

編集2018/10/20 08:02

前提・実現したいこと

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

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

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

試したこと

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

javac *.javaでコンパイルすると
コンパイルはできたのですが
クラスがないといわれて
実行ができませんでした

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

java

1package terraria.game; 2 3import terraria.game.*; 4import javax.swing.*; 5import javax.swing.Timer; 6import javax.imageio.*; 7import java.awt.*; 8import java.awt.event.*; 9import java.awt.image.*; 10import java.util.*; 11import java.io.*; 12 13public class Terraria extends JFrame implements ActionListener, KeyListener, MouseMotionListener, MouseListener 14{ 15 //処理の段階分けの列挙型 16 enum STATUS{ 17 INIT, 18 TITLE, 19 GAME 20 } 21 22 STATUS status = STATUS.INIT; 23 24 //画面のダブルバッファリング関係 25 BufferedImage buff = new BufferedImage(700, 500, BufferedImage.TYPE_4BYTE_ABGR_PRE); 26 Graphics2D g2 = buff.createGraphics(); 27 28 //キー入力の処理を行うタイマー 29 Timer keyTimer = new Timer(10, this); 30 31 //ファイル操作クラス 32 FileOperation file = new FileOperation(); 33 34 //マップデータを格納したコレクション 35 ArrayList<Map> map = new ArrayList<Map>(); 36 37 //キー入力フラグ 38 boolean key_up = false; 39 boolean key_down = false; 40 boolean key_right = false; 41 boolean key_left = false; 42 boolean key_enter = false; 43 boolean key_space = false; 44 45 //ウィンドウに入ったか判定するフラグ 46 boolean windowIn = false; 47 48 //マウスの座標 49 int mouseX = 0; 50 int mouseY = 0; 51 52 //マップデータを格納したコレクションの要素数 53 int mapSize = map.size(); 54 55 public static void main(String[] args) 56 { 57 Terraria frame = new Terraria(); 58 frame.setTitle("テラリア"); 59 frame.setSize(700, 500); 60 frame.setLocationRelativeTo(null); 61 frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 62 frame.setResizable(false); 63 frame.setAlwaysOnTop(false); 64 frame.setVisible(true); 65 } 66 67 Terraria() 68 { 69 JPanel panel = new JPanel(); 70 panel.setLayout(null); 71 72 addKeyListener(this); 73 addMouseMotionListener(this); 74 addMouseListener(this); 75 76 keyTimer.setActionCommand("キー入力"); 77 78 getContentPane().add(panel, BorderLayout.CENTER); 79 } 80 81 public void actionPerformed(ActionEvent e) 82 { 83 String cmd = e.getActionCommand(); 84 85 switch(cmd){ 86 case "キー入力":{ 87 //キー入力処理を実行 88 keyProcessing(); 89 }break; 90 } 91 } 92 93 public void paint(Graphics g) 94 { 95 g2 = buff.createGraphics(); 96 97 switch(status){ 98 case INIT:{ 99 if(!file.fileCheck("./SeveData")){ 100 file.makeDir("./SeveData"); 101 System.exit(0); 102 } 103 104 //背景色を白に設定 105 g2.setBackground(Color.white); 106 107 //マップを読み込む 108 loadMap(); 109 110 //キー入力処理のタイマーを開始 111 keyTimer.start(); 112 113 //タイトル画面に遷移 114 status = STATUS.TITLE; 115 repaint(); 116 }break; 117 118 case TITLE:{ 119 //画面を初期化 120 clearBack(); 121 }break; 122 123 case GAME:{ 124 //画面を初期化 125 clearBack(); 126 127 for(int i = 0; i < mapSize; i++){ 128 if(map.get(i).mapChipNumber == 1){ 129 g2.setColor(Color.green); 130 }else if(map.get(i).mapChipNumber == 2){ 131 g2.setColor(Color.blue); 132 } 133 134 g2.fillRect(map.get(i).x, map.get(i).y, 10, 10); 135 } 136 }break; 137 } 138 139 g.drawImage(buff, 0, 0, this); 140 g2.dispose(); 141 } 142 143 public void keyReleased(KeyEvent e) 144 { 145 switch(e.getKeyText(e.getKeyCode())){ 146 case "上": key_up = false; break; 147 case "下": key_down = false; break; 148 case "右": key_right = false; break; 149 case "左": key_left = false; break; 150 case "Enter": key_enter = false; break; 151 case "スペース": key_space = false; break; 152 } 153 } 154 155 public void keyPressed(KeyEvent e) 156 { 157 switch(e.getKeyText(e.getKeyCode())){ 158 case "上": key_up = true; break; 159 case "下": key_down = true; break; 160 case "右": key_right = true; break; 161 case "左": key_left = true; break; 162 case "Enter": key_enter = true; break; 163 case "スペース": key_space = true; break; 164 } 165 } 166 167 public void keyTyped(KeyEvent e){} 168 169 public void mouseMoved(MouseEvent e) 170 { 171 if(windowIn){ 172 Point point = e.getPoint(); 173 mouseX = point.x; 174 mouseY = point.y; 175 } 176 } 177 178 public void mouseDragged(MouseEvent e) 179 { 180 if(windowIn){ 181 Point point = e.getPoint(); 182 mouseX = point.x; 183 mouseY = point.y; 184 185 int index = getMapIndex(mouseX, mouseY); 186 187 if(index != -1){ 188 debug("I: " + index + " X: " + map.get(index).x + " Y: " + map.get(index).y + " L: " + map.get(index).layer + " M: " + map.get(index).mapChipNumber); 189 } 190 } 191 } 192 193 public void mouseClicked(MouseEvent e) 194 { 195 if(windowIn){ 196 int btn = e.getButton(); 197 198 switch(btn){ 199 case MouseEvent.BUTTON1:{ 200 int index = getMapIndex(mouseX, mouseY); 201 202 if(index != -1){ 203 debug("Index番号: " + index); 204 debug("X座標: " + map.get(index).x); 205 debug("Y座標: " + map.get(index).y); 206 debug("Layer: " + map.get(index).layer); 207 debug("MapCN: " + map.get(index).mapChipNumber); 208 } 209 }break; 210 211 case MouseEvent.BUTTON2:{ 212 //中クリックした時の処理 213 }break; 214 215 case MouseEvent.BUTTON3:{ 216 //右クリックした時の処理 217 }break; 218 } 219 220 if(e.getClickCount() >= 2){ 221 //ダブルクリックした時の処理 222 } 223 } 224 } 225 226 public void mouseEntered(MouseEvent e) 227 { 228 windowIn = true; 229 } 230 231 public void mouseExited(MouseEvent e) 232 { 233 windowIn = false; 234 } 235 236 public void mousePressed(MouseEvent e){} 237 public void mouseReleased(MouseEvent e){} 238 239 void clearBack() 240 { 241 //画面の初期化処理 242 g2.setColor(Color.white); 243 g2.fillRect(0, 0, 700, 500); 244 } 245 246 void keyProcessing() 247 { 248 if(key_up){ 249 250 } 251 252 if(key_down){ 253 254 } 255 256 if(key_right){ 257 258 } 259 260 if(key_left){ 261 262 } 263 264 if(key_enter){ 265 if(status == STATUS.TITLE){ 266 //ゲーム画面に切り替え 267 status = STATUS.GAME; 268 repaint(); 269 } 270 } 271 272 if(key_space){ 273 274 } 275 } 276 277 void loadMap() 278 { 279 //マップデータを1行ずつ読み込んで格納するコレクション 280 ArrayList<String> mapData = new ArrayList<String>(); 281 282 //マップデータの読み込み 283 file.readS2("./SeveData/Test/TestMapData.txt", mapData); 284 285 //読み込んだマップデータの要素数を数値化 286 int mapDataSize = mapData.size(); 287 288 //[,]で分割してマップデータを作成し格納 289 for(int i = 0; i < mapDataSize; i++){ 290 String[] strs = mapData.get(i).split(",", 0); 291 292 for(int j = 0; j < strs.length; j++){ 293 map.add(new Map((j * 10) + 10, (i * 10) + 31, 0, Integer.parseInt(strs[j]))); 294 } 295 } 296 297 //マップデータの要素数を更新 298 mapSize = map.size(); 299 } 300 301 int getMapIndex(int x, int y) 302 { 303 for(int i = 0; i < mapSize; i++){ 304 if((x >= map.get(i).x && x <= map.get(i).x + 10) && (y >= map.get(i).y && y <= map.get(i).y + 10)){ 305 return i; 306 } 307 } 308 309 return -1; 310 } 311 312 void debug(Object obj) 313 { 314 System.out.println(obj); 315 } 316}

エラー

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の中にクラスファイルがあります

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

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

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

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

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

A-pZ

2018/10/20 07:24

具体的に実装した内容も書くと、明確な回答が得られるでしょう。
退会済みユーザー

退会済みユーザー

2018/10/20 07:37

えっと…エラーを書かないと……。自分が質問して答えられそうか考えてみてください(答えれなさそうなら、なぜ答えられなそうか考えてみてください)。
A-pZ

2018/10/20 07:43

実際に何のエラーが起こっているのかも書くと良いでしょうか。なお、パッケージの移動をした場合は再コンパイルが必要になります。
退会済みユーザー

退会済みユーザー

2018/10/20 07:48

質問文がちょっと怪しいので、エラーを解決したいなどとしたほうが良いかもしれませんね。あまりにエラーが出て投げ出したくなったのかもしれませんが、ひとつひとつのエラーを調べて解決してみてはどうでしょうか。
swordone

2018/10/20 08:52

FileOperationとは何ですか?
Alpa

2018/10/20 09:18

FileOperationとはファイルの作成や削除などを行うメソッドがあるクラスです
退会済みユーザー

退会済みユーザー

2018/10/20 10:33

試してみたことにある内容ですが、それも必要な情報であアリますが、本来、エラーについて自分で調べてみたことを書く項目だと思います。なので、一度、各エラーの原因を自分で調べてみてください。その中で、根本的な原因、または複合的な原因が判明すると思います。それでもわからない場合などに質問するのがよいかと。
guest

回答1

0

ベストアンサー

簡単に説明

Terraria.java:32: エラー: シンボルを見つけられません

これはそのままです パッケージが見つからない、というエラーはないようですので大文字小文字等確認してみてください。

Terraria.java:293: エラー: Mapはabstractです。インスタンスを生成することはできません

これは Map クラスが abstract クラスなので(エラーそのまま)、Map を継承したクラスを使う必要があります。そのクラスはライブラリだとある場合もありますがこの場合は多分作ることになるでしょう。継承、abstract メゾットを実装してそのインスタンスを作成してください。(継承等は参考書やサイトに全部載ってるのでパス)

あとですね、正直言ってやっていたことはほぼエラーとは関係ありません。

この際は、ソースをちらっとのぞいてみましょう。また、階層を見ると大抵わかります。

長文失礼いたしました。

投稿2018/10/20 09:40

yukkuri

総合スコア624

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

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

Alpa

2018/10/20 13:32

回答ありがとうございました 自分ではなぜパッケージを付けただけで エラーになるのかわからず質問したのですが みなさんからいろいろ指摘を受けつつ調べていったのですが パッケージを付けた場合だけやはりエラーになるのでパッケージ外して作成を進めようと思います 様々な回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問