質問: apple + a + " ? "; ^ G[2 別の方法も試してみました。結果は以下の通りです。 C:\Users\●●●\Desktop\3autumn>javac -encoding UTF-8 fruit.java fruit.java:2: エラー: メソッド本体がないか、abstractとして宣言されています public static void main(String[] args); { ^ エラー1個 ### 補足情報(言語/FW/ツール等のバージョンなど) OSはwindows10(64bit) エディタはSublimeText3 コンパイラはコマンドプロンプト JDK1.8.0
回答: ### 文字化けの原因 元のソースコードはUTF-8(BOMなし)で作成したのだと思います。LinuxやMacですとそれが自然なのですが、残念ながらWindowsではそれは混乱の元になります。ご存知のようにデフォルトの文字セットがCP932(Microsoft ShiftJIS)だからです。 コマンドプロンプトでコンパイル・実行する場合以下のようにしないといけません。 (1) ソースコードをCP932(Microsoft ShiftJIS)で書くなら `chcp 932` `javac ソースファイル` `java クラス名` でコンパイル・実行をする (2) ソースコードをUTF-8で書くなら ・BOMを付加しないテキストエディタのみを使う(つまりメモ帳はNG) `chcp 932` `javac -encoding UTF-8 ソースファイル` `java クラス名` でコンパイル・実行をする。しかしこれだと`type ソースファイル名`とすると当然ながら文字化けします。 (3) ソースコードをUTF-8で書き、実行環境もUTF-8にするなら ・BOMを付加しないテキストエディタのみを使う(メモ帳はNG) `chcp 65001` `javac -J-Dfile.encoding=UTF-8 ソースファイル` `java -Dfile.encoding=UTF-8 クラス名` しかしこの環境ではjarコマンドなど他のJDKコマンド全てに一々`-J-Dfile.encoding=UTF-8`を指定しないといけないので鬱陶しいです。 (なお、自分はcygwin下でbashを用いて作業することが多いのでjavaコマンド以外のJDKのコマンドに`-J-Dfile.encoding=UTF-8`を付加したエリアス定義をしてます。コマンドプロンプトでもdoskeyを使うとできるらしいですが、自分はやったことがないです。) お奨めは...色々面倒なので(1)ですが、UTF-8でソースコードを書くなら、コマンドプロンプトではなくIDEで作業した方がやりやすい気がします。 ### 文字化け以外の問題 質問者さんは上記の(2)でコンパイルしておられ、その時点で文字化けの問題はなくなっていますが、肝心のJavaソースにも問題があるためコンパイルエラーが出ています。mintyさんが指摘されているとおりセミコロンが余計です。それを取り去ればとりあえずコンパイルはできます。 なお、ファイル名は「大文字・小文字を含めクラス名と正確に一致する名前」とした方がよいでしょう。実行する際のクラス名指定は大文字・小文字を正確に指定しなければならず、`java Fruit`とタイプすることになるので、Javaのコード上はもちろん、ファイル名の大文字と小文字もきちんと区別する習慣にした方がよいと思います。 たとえば本件ではfruitクラスがpublicでないためコンパイルエラーにはなりません。しかしクラスをpublicにしたとたん、 `fruit.java:1: エラー: クラス Fruitはpublicであり、ファイルFruit.javaで宣言する必要があります` と言われてしまいます。