javaプログラミングの初心者です。
私が使用している参考書に記載されている、「こんにちは」というタイトルのウィンドウを表示するプログラムを実践してみようと、内容をそのまま写し、「Sample3.java.java」というjavaファイルを作ってみたのですが(無駄に.javaを付けすぎてしまいました笑)、コンパイルをしようとすると、

「Sample3.java.java:8: エラー: クラスSample3はpublicであり、ファイルSample3.javaで宣言する必要があります
public class Sample3 extends Application
^
エラー1個」

と表示されるのですが、エラーの原因が分かりません。
一応、プログラミングの内容も書いておきます。
分かりにくい質問ですみません。
回答お待ちしています。

import javafx.application.*;
import javafx.stage.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;


public class Sample3 extends Application
{
public static void main(String[] args)
{
launch(args);
}
public void start (Stage stage)throws Exception
{
BorderPane bp = new BorderPane();

Scene sc = new Scene(bp,300,200);


stage.setScene(sc);
stage.setTitle("こんにちは");
stage.show();
}
}

A 回答 (2件)

JavaFxですね。



Javaのクラスというのはクラス名と同名のファイル(拡張子は .java) に入れないと
いけないのですよ。

つまり原因はエラーメッセージの通りです。
    • good
    • 0
この回答へのお礼

なるほど!
的確なアドバイスありがとうございます!
助かりました!

お礼日時:2017/05/14 23:21

「ファイルSample3.javaで宣言する必要があります」なんだから



> 「Sample3.java.java」というjavaファイルを作ってみたのですが(無駄に.javaを付けすぎてしまいました笑)

笑ってないで Sample3.java にすればいいのでは?
    • good
    • 1
この回答へのお礼

そういうことだったのですね!
助かりました、ありがとうございます!

お礼日時:2017/05/14 23:19

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qimportするには java.io.*; import org.apache.log4j.*;

EclipseでJavaの開発をしています。
import java.io.*;
import org.apache.log4j.*;
がエラーになります。
多分ライブラリーに入れる必要があるのだと思いますが、その方法について
教えて下さい。宜しくお願い致します。

Aベストアンサー

プロジェクトフォルダを右クリック→「ビルド・パス」→「ビルド・パスの構成」
あるいはプロジェクトフォルダを右クリック→「プロパティ」→「Javaのビルド・パス」

で、ライブラリがプロジェクトフォルダ配下に存在しているなら「Jarの追加」
プロジェクトフォルダ以外の場所にあるなら「外部Jarの追加」で追加できます。

ちなみにjava.ioはJ2SEに含まれているので(「JREシステムライブラリ」があるはずなので)
追加しなくても良いです。

QJAVAの質問です。 ( String args[] )それとも(String[] args) ?

MAINのこの引数ですが、
どちらが正しいのでしょうか?

また、そもそも この[]はなぜ必要なのでしょうか?
配列を意味していますか?

Aベストアンサー

mainに関してだけは (String[] args) が正しい・・・と思いましたが
( String args[] ) でコンパイルも実行も両方通ったのでどちらも正しいようです

配列を意味しています
例えば
String[] hai={"どちらも","正しい","とは","知らなかった"};
String hai[]={"どちらも","正しい","とは","知らなかった"};
ではどちらも配列を宣言した上でhai[0],hai[1],hai[2],hai[3]に文字列を代入しています。

String[] hai=new String[3];
String hai[]=new String[3];
で配列領域を確保してから
hai[0]="どちらも正しい";
のように代入してゆく方法もあります


main(String[] args) のString配列argsの中にはコマンドプロンプトでの実行時にプログラム名の後ろにスペースで分けて入力した文字列が[0]から順に代入されます

実行時に例えばHello.javaを実行するため

java Hello と入力して実行した時はargsには何も入っていませんが

java Hello nyuuryoku shita と入力して実行した時には

Hello.javaが実行された時mainメソッドの中で
args[0]には nyuuryoku が
args[1]には shita が代入された状態になっています

実行と同時に入力した値をプログラム内で使いたい時に用いる変数です

mainに関してだけは (String[] args) が正しい・・・と思いましたが
( String args[] ) でコンパイルも実行も両方通ったのでどちらも正しいようです

配列を意味しています
例えば
String[] hai={"どちらも","正しい","とは","知らなかった"};
String hai[]={"どちらも","正しい","とは","知らなかった"};
ではどちらも配列を宣言した上でhai[0],hai[1],hai[2],hai[3]に文字列を代入しています。

String[] hai=new String[3];
String hai[]=new String[3];
で配列領域を確保してから
hai[0]="どちらも正しい";...続きを読む

Qimport java.applet.Applet;について

ソースの先頭にimport java.applet.Applet;と書かれたソースをコンパイルすると、ローカルのjava.applet.Appletを読み込んで*.classを作るのだと思うのですが、java.applet.Appletが見つかりません。
普通はどのあたりにあるのでしょうか?

Aベストアンサー

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時には上記のJRE側の rt.jar が使用されます。

ですから、コンパイル時、あるいは実行時にそれぞれのディレクトリに rt.jar がないとエラーが発生します。

ちなみに rt.jar の中身を確認したいのであれば、下記のコマンドをコマンドプロンプトから実行し、出力先のファイルをテキストエディタで開くと確認できます。

 cd C:\j2sdk\jre\lib   ← ディレクトリ移動

 jar tvf rt.jar > C:\Temp\result.txt ← rt.jarの中身をテキストファイルに出力

 notepad C:\Temp\result.txt   ← メモ帳で出力結果を表示


 出力結果のファイルには、java.applet.Appletであれば "java/applet/Applet" のように "." が "/" に置き換わって出力されています。

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時...続きを読む

QAppletのpublic void paint(Graphics g)

は抽象クラスのGraphicsのオブジェクトを引数に持ちますが抽象クラスはオブジェクトを発生できないのに何故オブジェクトを渡せるのでしょうか?

Aベストアンサー

実際にパラメータとして渡されるのは、Graphicsのサブクラスのインスタンスだからです。

Graphics クラスは抽象クラスですが、そのサブクラスは抽象クラスとは限りません。

QInteger.parseInt()について public static void main(String[] args) { int a =

初歩的な質問だと思うのですが、、、

public class TestTree {

public static void main(String[] args) {

int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);

GreatTree myTree = new GreatTree(a, b);
myTree.makeTree();
myTree.makeGround();
}

}

というプログラムについて、Integer.parseInt()はどういう意味を持つのかがわかりません。ただ適当につけた名前だとは思えないです。教えてもらえたら幸いです。お願いします。

Aベストアンサー

> argsで入力されたものは例え数字でも文字列として扱われているから、それをintにしている。ということですよね?

引数として (String[] args) と設定されていますので、
おっしゃるとおり 引数 args[]配列に入っているものは、文字列です。

ポイントは、 「String[]」でしょうか。。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報