Java問題集の解答が意味不明?問題集とEclipseのどちらが間違っている?

このQ&Aのポイント
  • Java勉強中の初心者が「Oracle Javaプログラマ SE6」の問題集の解答について質問しています。
  • 問題集の解答が値として出るのにも関わらず、Eclipseで実際に検証するとエラーが出てしまうそうです。
  • 質問者は問題集が間違っていると思っていますが、Eclipseのエラーメッセージの通りに認識していいのか迷っています。
回答を見る
  • ベストアンサー

Javaの問題集の解答が意味不明です

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

  • Java
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 問題集がその通りであれば間違いですね。 >public 型 Sample はそれ独自のファイル内に定義されなければなりません このエラーの通りで public class Sample { } を定義するのであれば別のファイルでSample.javaの必要があります。 なので Sam0501.javaとSample.javaの2ファイルが必要になります。 一つのファイルで定義するのであれば class Sample { } とする必要があります。

ats1131
質問者

お礼

早々のご回答を頂きまして、ありがとうございます。 おっしゃる通り、「public」は同じファイルにできなかったです。 大原則を忘れてました・・・。 問題集には、見ようによっては、別ファイルのようにも見えるので、 まったく、私の勘違いでした。「別ファイル」という意味だと気が付きました。 ありがとうございます。 また、 「同一ファイルであれば、public を外して」とのご助言、 public を外してコンパイルしたら、通りました。そして結果が、Bの10でした。 とても分かりやすい解説を頂きまして感謝します。 お忙しい中、ありがとうございます。

関連するQ&A

  • javaの問題わからなくって質問します

    内容はEclipse上でプロジェクトフォルダを作りひとつは別のjavaファイルを動かすのともう一つはそのお同じフォルダから動かされるjavaプログラムです。 説明不足というかまだ触れてそんなにたってないのでソースを載せます class SampleManager { public static void main(String[] args){ exec obj= new exec(samlple1.java); obj.say(); } } class exec{ String phrase; exec(String phrase){ this.phrase=sample2.java; } void say(){ System.out.println(phrase); } } /////// public class samlple1 { public static String java; public static void exec(String[] args) {//execをした理由はSampleManagerにあるクラスexecを呼び出れるため System.out.println("Hello,World!")//この二つの出力結果を表示したい; System.out.println("こんにちは!"); } } ひとつのフォルダに上記のソースいれてSampleManager.java からsample.javaの出力結果の HelloWorld! こんにちは! を出力したいですがエラーはなく例外処理もありませんけど何故か出力結果はnullが返ってしまいます なぜでしょうか? アドバイスをお願いします

  • サンプルプログラムのエラー

    お世話になります。 「Eclipseで学ぶはじめてのJava」と言う本を購入しました。その本のSample10_10において、 Exception in thread "main" java.lang.Error: コンパイル問題が未解決です。 at Sample10_10.main(Sample10_10.java:8) と表示されてエラーになります。Eclipseの設定なのかもしれませんが対処法が分らないので先に進むことができません。 ソフトバンククリエイティブの問い合わせに質問しても全然取り合ってもらえず困っています。 package sample.sample10; import java.util.Arrays; public class Sample10_10 { public static int a; public static void main(String[] args) { int[] array = { 298, 827, 8348, 29, 892, 327, 8, 9, 2, 809, 32 }; System.out.println("配列の要素を表示します。" + Arrays.toString(array)); System.out.println("Arraysクラスを利用しないと、" + array + "となってしまう"); } }

    • ベストアンサー
    • Java
  • Javaでコンパイルできなくなりました

    javaでコンパイルできなくなりました。今まではJava2 SDK バージョン1.4.2_03をインストールしてコマンドプロンプトからjavac、javaコマンドを用いコンパイル、実行していました。 そして、Eclipse(バーション3.0)というIDE環境に興味を持ちインストールした後にとりあえずもう一度コマンドプロンプトからjavacコンパイルしてみたらエラーがでるようになりました。 ソースを書くと長くなってしまうので簡単に説明すると、String sに"Hello World"を代入してSystem.out.println()で表示させるだけのプログラムです。Eclipseをインストールする前は実行できたのでソースに問題があるという事はありません。エラーメッセージは以下のような感じでした //エラーメッセージ 検出値 : java.lang.String 期待値 : String String s = "Hello World"; その後にソースで String s="Hello World";としていた行を java.lang.String s = "Hello World";に変更しました するとjavacではエラーが出なくなるのですがjavaコマンドで実行すると Exception in thread "main" java.lang.NoSuchMethodError: main というメッセージが出て実行できないです。 環境変数は、SDKインストール後、PATHC:\j2sdk1.4.2_03\bin;を加え、Eclipseインストール後は何も変更していません。 何が問題なのでしょうか?お願いします。

    • ベストアンサー
    • Java
  • Javaについて教えてください!

    sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?

    • ベストアンサー
    • Java
  • java

    コンパイルできても、実行ができません。 次のようなエラーがでます。 このエラーはどのようなエラーなのでしょうか? Exception in thread "main" java.lang.NoClassDefFoundError: test コードはただたんにHello JAVA と表示させるだけです。 class Test{ public static void main(String args[]){ System.out.println("Hello Java\n"); } }

    • ベストアンサー
    • Java
  • JAVAでエラーがでる。

    JAVA初心者なのですが、下のプログラムは数値を入力して、それを表示させるという簡単なプログラムなのですが、実行すると、 String str = br.readLine(); のbr.readLine();の部分に赤い波線が出て、 「処理されない例外の型 IOException at B.main(B.java:11)」 というエラーが出てしまってこまっています。 参考書のとうりに入力しているのになぜでしょうか? タブやスペースが使えないので見にくくなってしまってすみません。 どなたかJAVAに詳しい方 教えてください。 import java.io.*; public class B { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); System.out.println(num + "が入力されまた。"); } }

    • ベストアンサー
    • Java
  • JAVAについて。コンパイルができません

    public class Main { public static void main(String[] args){ System.out.println("Hello World"); } } 上のソースで記述して、コマンドプロンプトでコンパイルしようとすると 下のような表示が起きます C:\Program Files\Java\jdk-12.0.1\bin>javac Main.java Main.java:1 エラー: Mainの書き込み中にエラーが発生しました: C:\Program Files\Java\ jdk-12.0.1\bin\Main.class public class Main { ^ エラー1個 何が原因でコンパイルされないかわからないです。 わかるかたいましたらよろしくお願いします。

  • NTEmacsでJavaのコンパイルをしたいです

    NTEmacsのシェルです。 Javaの勉強をつい最近始めました。JDKは入っていて、普段はjavac、javaは普通に動くのですが、import java.io.*;のようなことをすると、(パーケージを読みこませる等)その部分でエラーになってしまいます。 ただ、eclipseで同様のものを作ると、コンパイルはうまくいきます。 例 import java.io.*; class Sample4{ public static void main(String[] args) throws Exception { System.out.println("please imput something"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); System.out.println(str); } } 結果 c:\Users\***\Documents\Java>javac no_3.java javac no_3.java no_3.java:33: エラー: class、interfaceまたはenumがありません import java.io.*; ^ エラー1個

    • ベストアンサー
    • Java
  • Javaアプレットについての質問です

    Javaアプレット関係の質問です。 Eclipseで「Sample_01.java」ファイルを作成します。→ コマンドプロンプトでコンパイルします。→ 作成した「Sample_01.class」ファイルをデスクトップに移動します→ HTMLファイルを開きます。 …この手順だと問題なくアプレットを表示できるのですが、 Eclipseで「Sample_01.java」ファイルを作成します。→ 「保管」します。→ ナビゲータービューから「Sample_01.class」ファイルを取りだします→ デスクトップに移動します。→ HTMLファイルを開きます。 …この手順だとなぜか×マークが表示されエラーになります。 繰り返しになりますが、どちらのファイルも名前・中身は全く同じものとなっています。コンパイルの方法が違うだけです。 なぜEclipseで自動作成された方のclassファイルだけエラー?が出たのでしょうか?エラーが出ない対策とかはありませんかね? Javaアプレットに詳しい方いましたら教えてください。 //一応ソース乗せておきます import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; public class Sample_01 extends Applet{ private static final long serialVersionUID = 1L; public void init(){ } public void paint(Graphics g){ g.drawRect(200,200,25,30); } }

  • JAVA実行時のエラーメッセージについて

    コンパイル後、実行するとコードはどのようなものでも、同様のエラーメッセージが表示されます。 例えば、超基本の下記のソースでも表示されます。 //Sample01.java class Sample01 { public static void main (String args[]) { System.out.println("Hello World"); } } エラーメッセージは同様に、 「Excption in thread "main"java.lang.NoClassDefFoundError: Sample01」 と表示されてしまいます。 このエラーの対処方法をお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう