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

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

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

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

Q&A

解決済

2回答

4295閲覧

始めたばかりの初心者ですが、どうかよろしくお願いします。Javaの最初の方で躓きました。

former_neet_cat

総合スコア46

Java

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

0グッド

0クリップ

投稿2017/09/15 13:49

編集2017/09/19 13:04

始めたばかりなので、困っていることばかりです。

Java本格入門で勉強しています。
StudentSampleクラスを作成して、mainメッソドを定義し、その中でStudentクラスのインスタンスを作成して操作する例をしていたのですが、以下のエラーメッセジが発生しました。

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

Exception

1 No enclosing instance of type StudentSanple is accessible. Must qualify the allocation with an enclosing instance of type StudentSanple (e.g. x.new A() where x is an instance of StudentSanple). 2 3 at StudentSanple.main(StudentSanple.java:3)

###該当のソースコード

lang

1public class StudentSanple { 2 public static void main(String...args) { 3 Student murata = new Student(); 4 murata.name = "村田"; 5 murata.score = 80; 6 murata.printScore(); 7 8 Student okada = new Student(); 9 okada.name = "岡田"; 10 okada.score = 90; 11 okada.printScore(); 12 } 13 class Student { 14 String name; 15 int score; 16 static final int MAX_SCORE = 100; 17 18 void printScore() { 19 System.out.println(name + "さんは" + MAX_SCORE + "点満点中、" + score + "点です。"); 20 21 } 22 } 23 }

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

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

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

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

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

guest

回答2

0

ベストアンサー

エラーが出ている原因は、静的でないクラスを静的メソッドで参照しているからです。

またJavaでは、フィールド変数はデフォルトでprivateアクセスになります。
とりあえずエラーを消すだけなら、次のようにすればよいです。

Java

1static class Student { 2 public String name; 3 public int score; 4 static final int MAX_SCORE = 100; 5 6 public void printScore() { 7 System.out.println(name + "さんは" + MAX_SCORE + "点満点中、" + score + "点です。"); 8 9 } 10}

しかし、この方法は推奨されるものではありません。
クラスの利用者が、いくらでも情報を改ざん出来てしまうからです。

コンストラクタを適切に定義するか、アクセッサを用意しましょう。

Java

1class Student { 2 private String name; 3 private int score; 4 static final int MAX_SCORE = 100; 5 6 public Student(String name, int score) { 7 this.name = name; 8 this.score = score; 9 } 10 11 public void printScore() { 12 System.out.println(name + "さんは" + MAX_SCORE + "点満点中、" + score + "点です。"); 13 14 } 15}

呼び出すときには、こうすればよいです。

Java

1class StudentSample { 2 public StudentSample() { 3 Student murata = new Student("murata", 80); 4 murata.printScore(); 5 } 6 7 static void main(String[] args) { 8 new StudentSample(); 9 } 10}

コードはバッククオート三つで括ってください。
よくわからない場合は、マークダウン記法について調べてみてください。

投稿2017/09/15 13:53

編集2017/09/15 14:04
LouiS0616

総合スコア35660

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

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

former_neet_cat

2017/09/15 14:23

とてもわかりやすい回答ありがとうございます。 おかげで、先に進むことができました。
guest

0

StudentSanple.java:3というエラーは"StudentSanple"というファイルの3行目にエラーがあるということです。
エラー文を確認しながら、やっていくと成長すると思いますよ。
私も初心者です。頑張っていきましょう!!

投稿2017/09/15 14:04

alone.mk2

総合スコア58

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

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

former_neet_cat

2017/09/15 14:17

ありがとうございます。 悩んでいたことが解決しました。 私はJavaを今日始めたばかりですが、挫折せずに頑張っていくつもりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問