- ベストアンサー
クラス名とプログラム名の命名方法
- プログラムのクラス名について、適切な名前を付ける必要があります。クラス名はプログラムの目的や機能を表すものにすると良いでしょう。
- 一般的には、クラス名は単語の頭文字を大文字にし、キャメルケースで繋げる形式が使われます。また、クラス名は見た目や発音が分かりやすく、具体的な意味を伝えるようにすると良いでしょう。
- プログラム名については、全体の役割や目的を表す名前を付けると良いでしょう。プログラム名もクラス名と同様に見た目や発音が分かりやすく、具体的な意味を伝えるようにすると良いです。
- みんなの回答 (14)
- 専門家の回答
質問者が選んだベストアンサー
>kouzou@GD348ZZD9 /work $ java ex7/Main >0 >やっと0が出ました。 おめでとう。 今回のコードはそこまでです。 >kouzou@GD348ZZD9 /work $ java ex7/Sample >エラー: メイン・メソッドがクラスex7.Sampleで見つかりません。次のようにメイン・メソッドを定義してください。 単独で実行できないメソッドに実行命令を出したためのエラーです。 ex7/Sample.classはex7/Main.classの付属品ですから直接実行できません。 Main.classが大工さんならSample.classは鋸のようなものです。 鋸は木材を切る道具ですが大工さんが使うから役に立つもので、鋸だけでは勝手に材木のところへ行けませんし、誰かが動かしてやらないと材木を切れません。
その他の回答 (13)
- bunjii
- ベストアンサー率43% (3589/8249)
>このようになりましたが、ドコか間違ってますか・・・? 殆どのOSには最初からjava(jdk)がインストールされていませんのでインストールしないとjavaのソースファイルをコンパイルできません。 「次の操作を試してください: apt install <選択したパッケージ>」はリストアップされたJava(jdk)のどれかをaptコマンドでインストールするよう促しています。 お薦めのパッケージは「default-jdk」です。 尚、管理者権限のrootでインストールを実行しますので下記のようになります。 kouzou@GD348ZZD9 ~ $ sudo apt insutall default-jdk カレントディレクトリは何処でも同じ結果になります。 >この後、ドウすればいいですか・・・? ユーザーIDのkouzouに戻ってカレントデレクトリーを/workに移動して/work/ex7に保存されたMain.javaをコンパイルします。 kouzou@GD348ZZD9 work $ javac ex7/Main.java コンパイルでエラーが発生したときはエラー内容を補足してください。 Sample.javaとMain.javaのソースコードも提示してください。
- wormhole
- ベストアンサー率28% (1626/5665)
>ゼンゼンwormhole様の思っていることと違いますか・・・? ぜんぜん違います。 というか#1の補足は何やってるんですか? どういう行動した結果なのかは何となく想像はつきますが、何を持ってそういう行動したのかがさっぱりわかりません。
お礼
ご回答誠にありがとうございます。
- amanojaku1
- ベストアンサー率54% (265/488)
>Sample.javaとMain.javaは >エディターで分けるのですか・・・? ファイルを分けて下さい。 恐らく、そちらの理解ではエディターで分ける、と言う表現になるのかもしれませんが、正確にはファイルを分けると言うことです。
お礼
ご回答誠にありがとうございます。
- bunjii
- ベストアンサー率43% (3589/8249)
>GD348ZZD9 ex7 # javac ex7/Sample.java >プログラム 'javac' は以下のパッケージで見つかりました: javaがインストールされていないようです。 OSを入れ替えたときはjavaのインストールをしないとコンパイルできません。 >次の操作を試してください: apt install <選択したパッケージ> <選択したパッケージ>をdefault-jdkに変えてコマンドを実行すればjava(jdk)がインストールされます。 下記のコマンドでjavaをインストールしてください。 GD348ZZD9 ex7 work # apt install default-jdk もう1度冷静になって手順を辿ってください。
お礼
ご回答誠にありがとうございます。
- bunjii
- ベストアンサー率43% (3589/8249)
回答No.5の補足は何ですか? 全く意味不明です。 以前の質問経緯からの推測ではLinux OSのrootにworkと言う作業用ディレクトリを作成してアクセス権をすべて許可(chmod 777 /work)とされているようです。 /workにサブディレクトリのex7を作成するときはsudo(管理者権限)で作業する必要はありません。 GD348ZZD9 work # mkdir ex7 ↓ ユーザーのkouzouのままでex7を作成します。 kouzou@GD348ZZD9 work $ mkdir ex7 次のコマンドは何を考えたのですか? ---------------ここから--------------- GD348ZZD9 work # public class Sample { public: コマンドが見つかりません GD348ZZD9 work # >public final static int VALUE = 100; final: コマンドが見つかりません GD348ZZD9 work # >} ---------------ここまで--------------- 上記の代わりにテキストエディターでjavaのコードを記述して/work/ex7へSample.javaのファイル名で保存すれば良いと思います。但し、1行目に「package ex7;」を忘れずに記載してください。 Sample.javaの内容は以下のとおりです。 package ex7; public class Sample { public final static int VALUE = 100; } Main.javaも同様にテキストエディターで作成して/work/ex7へ保存してください。 >GD348ZZD9 ex7 # apt install mailagent これは別件ですか?
お礼
ご回答誠にありがとうございます。
- bunjii
- ベストアンサー率43% (3589/8249)
>Sample.java >Main.java >の2つのファイルが出来るという事ですか・・・? 2つのファイルが出来るのではなく提示のコードは2つの.javaファイルなので区別して保存しないとコンパイルできません。 >何故、ex7というディレクトリを作らないといけないのですか・・・? 下記の構文でex7と言うサブディレクトリに保存することを宣言しています。 package ex7; ここで言う「package」は「サブディレクトリ」のことです。 同じpackageへ幾つもの.javaファイルを作成して1つのプログラムに統合したものがprojectになります。 projectにはmainメソッドが1つだけ作成できます。 今回の例ではMain.javaにmainメソッドがあり、Sample.javaにはmainメソッドがありません。 javac ex7/Main.java でコンパイルすると Sample.classとMain.classの2つがサブディレクトリのex7に作成されます。
お礼
GD348ZZD9 ex7 # javac ex7/Sample.java プログラム 'javac' は以下のパッケージで見つかりました: * default-jdk * ecj * gcj-5-jdk * openjdk-8-jdk-headless * gcj-4.8-jdk * gcj-4.9-jdk * openjdk-9-jdk-headless 次の操作を試してください: apt install <選択したパッケージ> GD348ZZD9 ex7 # javac ex/Main.java プログラム 'javac' は以下のパッケージで見つかりました: * default-jdk * ecj * gcj-5-jdk * openjdk-8-jdk-headless * gcj-4.8-jdk * gcj-4.9-jdk * openjdk-9-jdk-headless 次の操作を試してください: apt install <選択したパッケージ> このようになりましたが、ドコか間違ってますか・・・? この後、ドウすればいいですか・・・?
補足
kouzou@GD348ZZD9 / $ cd work kouzou@GD348ZZD9 /work $ javac ex7/Sample.java kouzou@GD348ZZD9 /work $ javac ex7/Main.java kouzou@GD348ZZD9 /work $ java ex7/Sample エラー: メイン・メソッドがクラスex7.Sampleで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります kouzou@GD348ZZD9 /work $ java ex7/Main 0 やっと0が出ました。 kouzou@GD348ZZD9 /work $ java ex7/Sample エラー: メイン・メソッドがクラスex7.Sampleで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります とコメントが出てますが、ここはドウすれば改善できますか?
- bunjii
- ベストアンサー率43% (3589/8249)
回答No.5の一部訂正です。 コンパイル時は次のようにjavacコマンドを実行します。 javac ex7/Sample.java javac ex/Main.java ↓ コンパイル時は次のようにjavacコマンドを実行します。 javac ex/Main.java Main.javaをコンパイルするとSample.javaが同時にコンパイルされました。
お礼
48ZZD9 work # cd ex7 GD348ZZD9 ex7 # package ex7; package: can't open config file /root/.mailagent GD348ZZD9 ex7 # GD348ZZD9 ex7 # public class Sample { public: コマンドが見つかりません GD348ZZD9 ex7 # public final static int VALUE = 100; public: コマンドが見つかりません GD348ZZD9 ex7 # } -bash: 予期しないトークン `}' 周辺に構文エラーがあります GD348ZZD9 ex7 # package ex7; package: can't open config file /root/.mailagent GD348ZZD9 ex7 # GD348ZZD9 ex7 # public class Sample { public: コマンドが見つかりません GD348ZZD9 ex7 # public final static int VALUE = 100; public: コマンドが見つかりません GD348ZZD9 ex7 # } と出ます。ボクが理屈を知らないからだと思います。 ドウすればいいでしょうか・・・?
補足
GD348ZZD9 ex7 # javac ex7/Sample.java プログラム 'javac' は以下のパッケージで見つかりました: * default-jdk * ecj * gcj-5-jdk * openjdk-8-jdk-headless * gcj-4.8-jdk * gcj-4.9-jdk * openjdk-9-jdk-headless 次の操作を試してください: apt install <選択したパッケージ> GD348ZZD9 ex7 # apt install ex7 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 E: パッケージ ex7 が見つかりません GD348ZZD9 ex7 # apt install package ex7 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 E: パッケージ package が見つかりません E: パッケージ ex7 が見つかりません GD348ZZD9 ex7 # javac ex/Main.java プログラム 'javac' は以下のパッケージで見つかりました: * default-jdk * ecj * gcj-5-jdk * openjdk-8-jdk-headless * gcj-4.8-jdk * gcj-4.9-jdk * openjdk-9-jdk-headless 次の操作を試してください: apt install <選択したパッケージ> 次の操作を試してください:が分かりません。 どうか、教えてください。
- amanojaku1
- ベストアンサー率54% (265/488)
>プログラム名は何と付けて保管すればいいですか・・・? プログラム名とは何を指して言ってますか? ソースはjavaファイルに保存して下さい。 javaファイル名はメイン・クラス名と同じにして下さい。 下記のjavaファイル名は「Sample.java」にする必要があります。 >package ex7; >public class Sample { >public final static int VALUE = 100; >} 下記のjavaファイル名は「Main.java」にする必要があります。 >package ex7; >import static ex7.Sample.VALUE; >public class Main { >private final static int VALUE = 0; >public static void main(String[] args) { >System.out.println(VALUE); >} >}
お礼
ご回答誠にありがとうございます。
補足
Sample.javaとMain.javaは エディターで分けるのですか・・・? どうぞ、教えてください・・・。
- bunjii
- ベストアンサー率43% (3589/8249)
回答No.4の追加です。 package ex7; は「以下のコードはサブディレクトリのex7で実行する」と云うことを定義していますのでコンパイル時にカレントディレクトリから見て直下のサブディレクトリであるex7に保存されていなければなりません。 提示のコードは2つのclassなので以下のようにソースを区分けしてください。 Sample.java ---------------ここから--------------- package ex7; public class Sample { public final static int VALUE = 100; } ---------------ここまで--------------- Main.java ---------------ここから--------------- package ex7; import static ex7.Sample.VALUE; public class Main { private final static int VALUE = 0; public static void main(String[] args) { System.out.println(VALUE); } } ---------------ここまで--------------- コンパイル時は次のようにjavacコマンドを実行します。 javac ex7/Sample.java javac ex/Main.java エラーが起ったときはエラーメッセージを添えて補足の投稿をしてください。 エラーが無ければex7サブディレクトリにSample.classとMain.classが生成されるはずです。 動作テストは次のようにjavaコマンドを実行します。 java ex/Main Sample.classにはmainメソッドが無いので実行できませんがMain.classを実行するにはSample.classが必要です。
お礼
ご回答誠にありがとうございます。 Sample.java Main.java の2つのファイルが出来るという事ですか・・・? 何故、ex7というディレクトリを作らないといけないのですか・・・? 保存は Sample.java Main.java Sample.class Main.class 4つのファイルが出来るのですね・・・。
補足
kouzou@GD348ZZD9 ~ $ sudo -i [sudo] kouzou のパスワード: GD348ZZD9 ~ # ls GD348ZZD9 ~ # cd .. GD348ZZD9 / # ls bin dev initrd.img lost+found opt run sys var boot etc lib media proc sbin tmp vmlinuz cdrom home lib64 mnt root srv usr work GD348ZZD9 / # cd work GD348ZZD9 work # mkdir ex7 GD348ZZD9 work # public class Sample { public: コマンドが見つかりません GD348ZZD9 work # >public final static int VALUE = 100; final: コマンドが見つかりません GD348ZZD9 work # >} GD348ZZD9 work # public class Sample{public final static int VALUE = 100,} public: コマンドが見つかりません GD348ZZD9 work # cd ex7 GD348ZZD9 ex7 # public class Sample{public final static int VALUE = 100,} public: コマンドが見つかりません GD348ZZD9 ex7 # package ex7; プログラム 'package' はまだインストールされていません。 次のように入力することでインストールできます: apt install mailagent GD348ZZD9 ex7 # import static ex7.Sample.VALUE; import: unable to grab mouse `': リソースが一時的に利用できません @ error/xwindow.c/XSelectWindow/9199. GD348ZZD9 ex7 # public class Main { public: コマンドが見つかりません GD348ZZD9 ex7 # private final static int VALUE = 0; private: コマンドが見つかりません GD348ZZD9 ex7 # public static void main(String[] args) { -bash: 予期しないトークン `(' 周辺に構文エラーがあります GD348ZZD9 ex7 # System.out.println(VALUE); -bash: 予期しないトークン `VALUE' 周辺に構文エラーがあります GD348ZZD9 ex7 # } -bash: 予期しないトークン `}' 周辺に構文エラーがあります GD348ZZD9 ex7 # }apt install mailagent コマンド '}apt' は見つかりませんでした。もしかして: コマンド 'apt' - パッケージ 'apt' (main) コマンド 'aapt' - パッケージ 'aapt' (universe) }apt: コマンドが見つかりません GD348ZZD9 ex7 # apt install mailagent パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: exim4 exim4-base exim4-config exim4-daemon-light libperl4-corelibs-perl 提案パッケージ: eximon4 exim4-doc-html | exim4-doc-info spf-tools-perl swaks 推奨パッケージ: mailx 以下のパッケージが新たにインストールされます: GD348ZZD9 ex7 # package ex7; package: can't open config file /root/.mailagent GD348ZZD9 ex7 # public class Sample { public: コマンドが見つかりません GD348ZZD9 ex7 # public final static int VALUE = 100; public: コマンドが見つかりません GD348ZZD9 ex7 # }package ex7; コマンド '}package' は見つかりませんでした。もしかして: コマンド 'package' - パッケージ 'mailagent' (universe) }package: コマンドが見つかりません GD348ZZD9 ex7 # public class Sample { public: コマンドが見つかりません GD348ZZD9 ex7 # public final static int VALUE = 100; public: コマンドが見つかりません GD348ZZD9 ex7 # package ex7; package: can't open config file /root/.mailagent GD348ZZD9 ex7 # public class Sample { public: コマンドが見つかりません GD348ZZD9 ex7 # public final static int VALUE = 100; public: コマンドが見つかりません GD348ZZD9 ex7 # }
- bunjii
- ベストアンサー率43% (3589/8249)
質問の前提条件を省くと状況が分からないので的確な回答になりません。 以前からの類推ではOSがUbuntu 18.04で、テキストエディターでソースコードを編集して/WORKがカレントディレクトリで、其処へソース(.javaファイル)を保存していますよね? コンパイル時は「端末」を起動してカレントディレクトリの/WORKからjavacコマンドでコンパイルしていたと記憶しています。 提示のソースコードでは「package ex7;」で指定しているex7がカレントディレクトリのサブディレクトリ名で、その中にソースファイルの名前を「public class Sample{」で指定しているSampleに.javaを付加したSample.javaとして保存します。 コンパイル時は javac ex7/Sample.java 生成されたclassファイルはex7/Sample.classとなります。 提示のコードで public class Sample { public final static int VALUE = 100; } の外側にmainメソッドを記述しているのでコンパイルの検証が必要になるでしょう。
お礼
ご回答誠にありがとうございます。 OSはLinuxMint18.03なのです。 Ubuntuがインターネット不通になるので変えてみたのです。 この問題は意地でもマスターしたいと思いますので 宜しくお願い申し上げます。
補足
結果的に Sample.java Sample.class Main.java Main.class で保存するのですか・・・?
- 1
- 2
お礼
ご回答誠にありがとうございます。