質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

358閲覧

じゃんけんゲームで絵文字の手がうまく表示されない

sanchunaka

総合スコア30

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2025/02/05 21:48

編集2025/02/05 21:55

実現したいこと

じゃんけんゲームで手を文字でなく、絵文字で表示したい。

イメージ説明

発生している問題・分からないこと

Java基礎オブジェクト指向編https://codeprep.jp/books/66/chapters/1/sections/5
で勉強しています。
じゃんけんゲームで手を文字でなく、絵文字で表示したいのですが、
PS C:\JAVAWORK\5-2\src\janken> java janken.Main で「???」と表示されます。

エラーメッセージ

error

1エラーは出ていないようですがよくわかりません。

該当のソースコード

Main.java

1package janken; 2 3public class Main { 4 public Main() { 5 } 6 7 public static void main(String[] var0) throws Exception { 8 System.out.println(JankenHand.Rock); 9 System.out.println(JankenHand.Scissors); 10 System.out.println(JankenHand.Paper); 11 } 12}

JankenHand.java

1package janken; 2 3public enum JankenHand { 4 Rock, 5 Scissors, 6 Paper; 7 8 @Override 9 public String toString() { 10 switch (this) { 11 case Rock:return "✊"; 12 case Scissors:return "✌"; 13 case Paper:return "✋"; 14 } 15 throw new IllegalStateException(); 16 } 17}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

イメージ説明

補足

windows10,VSCodeでExtension pack for javaを入れています。
環境変数:
JAVA_HOME:C:\Program Files\Java\jdk-23
path:%JAVA_HOME%\bin
ワークフォルダはc:\JAVAWORK\5-2として、プロジェクトは5-2フォルダです。
c:\JAVAWORK\5-2¥-vscode、bin,img,lib,src,src\janken\jankenで
src\janken\jankenにクラスファイル,JavaHand.java、Main.java をいれています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sanchunaka

2025/02/05 22:04

.vscodeの中身はsettings.json,tasks.jsonです。 //settings.json } //tasks.json { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format // This is for Java Programming 1 class at Fukuoka Institute of Technology // Copy this file into ".vscode" folder which is a subfolder of the workspace // Type "Cntr + Shift + B" to compile and run the code // // Version 3.0.7, 2023.04.02 // // Dependences on System Environment Variables: // - JAVA_HOME is set on the JAVA SDK top folder such as C:\Program Files\Java\jdk-14.0.1 // - PATH includes the bin folder of the JAVA SDK such as %JAVA_HOME%\bin "version": "2.0.0", "tasks": [ { "label": "javac", "type": "shell", "options":{ "shell":{ "executable": "powershell.exe" } }, "command": "javac", "args": [ "-encoding", "utf-8", "-cp", "'.;${fileDirname}'", "${file}" ], }, { "label": "java", "type": "shell", "options":{ "shell":{ "executable": "powershell.exe" } }, "command": "java", "args": [ "-cp", "'.;${fileDirname}'", "${fileBasenameNoExtension}" ], "group":{ "kind": "build", "isDefault": true }, "dependsOn": [ "javac" ], } ] }
syoshinsya-

2025/02/05 23:06

vscodeのターミナルで使用しているフォントが絵文字に対応していない可能性はないですか? vscodeの設定からフォントの変更を試してみてください
sanchunaka

2025/02/05 23:15

ありがとうございます。 vscodeの設定からフォントの変更はどこを変更すればいいのでしょうか。 よろしくお願いいたします。
sanchunaka

2025/02/05 23:47

BizinGothicをデスクトップにダウンロードして、インストールしました。 vscodeの設定,editor:font familyにBizinGothicと書き込めばいいのでしょうか。 よろしくお願いいたします。
sanchunaka

2025/02/06 07:44

コメントいただきありがとうございます。 上記のウェブサイトを見て、修正しましたがかわりませんでした。 // Main.java import java.nio.charset.Charset; public class Main { public static void main(String[] args) { System.out.println("Java Runtime version :" + System.getProperty("java.runtime.version")); System.out.println("Charset.defaultCharset() :" + Charset.defaultCharset()); System.out.println("----------------------------------------------"); System.out.println("\"file.encoding\" = " + System.getProperty("file.encoding")); System.out.println("\"native.encoding\" = " + System.getProperty("native.encoding")); System.out.println("\"sun.jnu.encoding\" = " + System.getProperty("sun.jnu.encoding")); System.out.println("\"sun.stdout.encoding\" = " + System.getProperty("sun.stdout.encoding")); System.out.println("\"sun.stderr.encoding\" = " + System.getProperty("sun.stderr.encoding")); System.out.println("----------------------------------------------"); System.out.println("あいうえお"); } } //実行結果 Charset.defaultCharset() :UTF-8 ---------------------------------------------- "file.encoding" = UTF-8 "native.encoding" = MS932 "sun.jnu.encoding" = MS932 "sun.stdout.encoding" = null "sun.stderr.encoding" = null ---------------------------------------------- あいうえお PS C:\JAVAWORK\5-2> となり、 5-2のMain.javaを実行してみましたが変化はありませんでした。
juner

2025/02/06 07:49

記事中にある様に `sun.stdout.encoding` が null だと `native.encoding` が使われるので UTF-8 を MS932 に変換して出力されているって意味ではないでしょうか? 対応方法についても 環境変数 JAVA_TOOL_OPTIONS を定義することでできると書いて ありませんでしょうか?
sanchunaka

2025/02/06 07:53

ありがとうございました。コマンドプロンプトでcpchを確認したら932でしたので、 >chcp 65001で変更して、実行したら目的の表示になりました。
sanchunaka

2025/02/06 08:06

「環境変数 JAVA_TOOL_OPTIONS を定義する」を教えていただけませんか。 環境変数のやり方はわかるんですが、具体的にどうすればいいんでしょうか。 一応解決済みにしましたが、これを設定するとVSCODEでもうまくいくんでしょうか。 よろしくお願いいたします。
sanchunaka

2025/02/06 09:48

環境変数 にJAVA_TOOL_OPTIONS を定義できました。 ありがとうございました。
guest

回答2

0

自己解決

juner様にご教授していただいた以下のウェブサイトを参考に
Java コンソール出力が文字化けする場合にやるべきことhttps://blog1.mammb.com/entry/2024/03/07/090000#google_vignette

PowerShellで
PS C:\Windows\system32> $ENV:JAVA_TOOL_OPTIONS = '-Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8'
PS C:\Windows\system32> chcp 65001
した後だったと思いますが、無事にVSCodeでも「じゃんけんの手」が絵文字で表示できるようになりました。
いろいろセットしましたので確信は持てませんが、
いつの間にか
"stdout.encoding" = UTF-8
"stderr.encoding" = UTF-8
になっていましたので、実行してみるとうまくいきました。

投稿2025/02/06 16:45

sanchunaka

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Main.java

1import java.nio.charset.Charset; 2 3public class Main { 4 5 public static void main(String[] args) { 6 System.out.println("Java Runtime version :" + System.getProperty("java.runtime.version")); 7 System.out.println("Charset.defaultCharset() :" + Charset.defaultCharset()); 8 System.out.println("----------------------------------------------"); 9 System.out.println("\"file.encoding\" = " + System.getProperty("file.encoding")); 10 System.out.println("\"native.encoding\" = " + System.getProperty("native.encoding")); 11 System.out.println("\"sun.jnu.encoding\" = " + System.getProperty("sun.jnu.encoding")); 12 System.out.println("\"sun.stdout.encoding\" = " + System.getProperty("sun.stdout.encoding")); 13 System.out.println("\"sun.stderr.encoding\" = " + System.getProperty("sun.stderr.encoding")); 14 System.out.println("----------------------------------------------"); 15 System.out.println("あいうえお"); 16 } 17} 18実行して 19PS C:\JAVAWORK\5-2> c:; cd 'c:\JAVAWORK\5-2'; & 'C:\Program Files\Java\jdk-23\bin\java.exe' '--enable-preview' '-XX:+ShowCodeDetailsInExceptionMessages' '-cp' 'C:\Users\0hc49\AppData\Roaming\Code\User\workspaceStorage\ce179ces' '-cp' 'C:\Users\0hc49\AppData\Roaming\Code\User\workspaceStorage\ce179c5a57fcc60792e2cf056eb1c44f\redhat.java\jdt_ws\5-2_68e90776\bin' 'Main' 20Java Runtime version :23.0.2+7-58 21Charset.defaultCharset() :UTF-8 22---------------------------------------------- 23"file.encoding" = UTF-8 24"native.encoding" = MS932 25"sun.jnu.encoding" = MS932 26"sun.stdout.encoding" = null 27"sun.stderr.encoding" = null 28---------------------------------------------- 29あいうえお 30PS C:\JAVAWORK\5-2> 31

を確認してVSCODEで実行しても変わらなかったので
Windows10のコマンドプロンプトで >chcp 65001を実行して、
問題の「じゃんけんの手」を実行したら、絵文字の手がうまく表示されました。

投稿2025/02/06 09:49

sanchunaka

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問