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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

2回答

3358閲覧

【Java】列挙型Enumのフィールドの値が取得できない

xiaosen

総合スコア12

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2019/06/11 14:47

前提・実現したいこと

Java初心者です。
下記のソースコードを実行し、「1」を表示させたかったのですが、NullPointerExceptionエラーが発生してしまいます。

どうすればNullPointerExceptionにならず、フィールドの値を取得できるでしょうか?ご教示ください。お願いいたします。

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

Exception in thread "main" java.lang.NullPointerException
at shogi_package.Main.main(Main.java:7)

該当のソースコード

package shogi_package;

public class Main {

public static void main(String[] args) { System.out.println(KOMAINF.FU.getNum()); } } public enum KOMAINF { OUT_OF_BOARD(64), EMPTY(0), FU(1), KY(2), KE(3), GI(4), KI(5), KA(6), HI(7), OU(8), PROMOTED(8), TO(PROMOTED + FU), NY(PROMOTED + KY), NK(PROMOTED + KE), NG(PROMOTED + GI), UM(PROMOTED + KA), RY(PROMOTED + HI), ENEMY(16), EFU(ENEMY + FU), EKY(ENEMY + KY), EKE(ENEMY + KE), EGI(ENEMY + GI), EKI(ENEMY + KI), EKA(ENEMY + KA), EHI(ENEMY + HI), EOU(ENEMY + OU), ETO(ENEMY + TO), ENY(ENEMY + NY), ENK(ENEMY + NK), ENG(ENEMY + NG), EUM(ENEMY + UM), ERY(ENEMY + RY); private final int num; private KOMAINF(int num){ this.num = num; } int getNum(){ return this.num; }

}

試したこと

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

A-pZさんがソースの誤りを指摘しておられますが、この誤りがある状態で

Exception in thread "main" java.lang.NullPointerException
at shogi_package.Main.main(Main.java:7)

というエラーが起きること自体がおかしいです。コンパイルの仕方がおかしいと思えるので次のようにコンパイルと実行をしているか確認してみたほうがよいでしょう。

・ディレクトリー構成

. (作業ディレクトリー) | + shogi_package (パッケージ用のディレクトリー) + Main.java + KOMAINF.java + out (クラスファイルの出力先)

・コンパイル
作業ディレクトリーから
javac -d out shogi_package/*.java

・実行
作業ディレクトリーから
java -cp out shogi_package.Main

想像ですけど、NullPointerExceptionはjavaのソースコードとコンパイルした結果のクラスファイルとの整合性が取れてない病的な状態となっていることが遠因であるように思います。もしそうなってなければ一旦全てのclassファイルを消して上記の手順でコンパイルしなおしたほうがよいでしょう。そうすればコンパイルエラーを解消しない限りKOMAINF.classは生成されず、無理に実行しようとすればNullPointerExceptionではなく

Exception in thread "main" java.lang.NoClassDefFoundError: shogi_package/KOMAINF at shogi_package.Main.main(Main.java:7)

のような例外が起きるはずです。

投稿2019/06/12 02:16

KSwordOfHaste

総合スコア18394

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

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

0

列挙型の使い方に誤りがあり、コンパイルエラーが出ます。

java

1TO(PROMOTED + FU),

では、enumの中に同じenumを入れているので、引数の型が異なっています。

以下の状態ならコンパイルエラーはなく正常に動作できますので、そこから実現されたいコードを見直すのが良いでしょうか。

java

1public class Shogikoma { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 System.out.println(KOMAINF.FU.getNum()); 8 9 } 10 enum KOMAINF { 11 OUT_OF_BOARD(64), 12 EMPTY(0), 13 FU(1), 14 KY(2), 15 KE(3), 16 GI(4), 17 KI(5), 18 KA(6), 19 HI(7), 20 OU(8), 21 PROMOTED(8), 22 23 ENEMY(16),; 24 25 26 private int num; 27 28 private KOMAINF(int num){ 29 this.num = num; 30 } 31 32 int getNum(){ 33 return this.num; 34 } 35 }

投稿2019/06/11 15:36

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問