【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?

Java勉強中の初心者です。
お世話になります。

「Oracle Javaプログラマ SE6」のある問題集の中から、
下記の問題文がありました。
問題集の答えは「値」が出るのですが、Eclipseで実際に検証しようとすると、
エラーが出ます。

質問ですが、間違っているのは、問題集なのか、Eclipseなのか見当が付きません。
問題集が間違ってると思うのですが、認識は合ってますか?
また、間違っているポイントは、Eclipseのエラーの通りでしょうか?
(Eclipseのエラーメッセージも噛み砕いて頂けますとありがたいです)


■問題集■
ーーーーーーーーーーーーーーーーーーーーーーーー
01: package jp.tu.book3; //←Eclipseで実行するために追記した文
02:
03: public class Sam0501 {
04:   public static void main(String[] args) {
05:     Sample.num = 10;
06:     Sample s1 = new Sample();
07:     Sample s2 = new Sample();
08:     s2.num = 5;
09:     System.out.println(s1.num + s2.num);
10:   }
11: }
12:
13: public class Sample{
14:   public static int num = 2;
15: }
ーーーーーーーーーーーーーーーーーーーーーーーー
問題
 A. 7が表示される
 B. 10が表示される
 C. 15が表示される
 D. 20が表示される
解答:B
ーーーーーーーーーーーーーーーーーーーーーーーー

■Eclipseでの実行■
・Eclipse情報 : Eclipse IDE for Java Developers
           Version: Juno Service Release 2
・Java情報 : version 1.7.0_17
・ソースファイル名 : <Sam0501.java>
・Eclipseエラーメッセージ:
  Exception in thread "main" java.lang.Error: Unresolved compilation problem:
  public 型 Sample はそれ独自のファイル内に定義されなければなりません

  at jp.tu.book3.Sample.<init>(Sam0501.java:13)
  at jp.tu.book3.Sam0501.main(Sam0501.java:6)


以上、よろしくお願いいたします。m(_ . _)m

A 回答 (1件)

こんにちは。



問題集がその通りであれば間違いですね。

>public 型 Sample はそれ独自のファイル内に定義されなければなりません
このエラーの通りで
public class Sample {
}

を定義するのであれば別のファイルでSample.javaの必要があります。

なので

Sam0501.javaとSample.javaの2ファイルが必要になります。

一つのファイルで定義するのであれば
class Sample {
}

とする必要があります。
    • good
    • 0
この回答へのお礼

早々のご回答を頂きまして、ありがとうございます。

おっしゃる通り、「public」は同じファイルにできなかったです。
大原則を忘れてました・・・。

問題集には、見ようによっては、別ファイルのようにも見えるので、
まったく、私の勘違いでした。「別ファイル」という意味だと気が付きました。

ありがとうございます。


また、
「同一ファイルであれば、public を外して」とのご助言、
public を外してコンパイルしたら、通りました。そして結果が、Bの10でした。

とても分かりやすい解説を頂きまして感謝します。
お忙しい中、ありがとうございます。

お礼日時:2013/05/01 12:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報