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

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

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

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Q&A

1回答

584閲覧

ASCIIコード表の見方がわからない

fabian

総合スコア0

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

0グッド

0クリップ

投稿2022/12/25 10:58

前提

ASCIIコード表の見方がわからない

実現したいこと

0x2fがASCIIコード表でみると0である理由を知りたい。 47でないのはなぜか知りたい
以下がASCIIコード表である
https://java-reference.com/java_info_ascii.html

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

JavaFX

1import java.awt.Toolkit; 2 3import java.nio.file.Paths; 4import java.time.Instant; 5import java.util.Random; 6 7import javafx.application.Application; 8import javafx.application.Platform; 9import javafx.geometry.Pos; 10import javafx.scene.Scene; 11import javafx.scene.canvas.Canvas; 12import javafx.scene.canvas.GraphicsContext; 13import javafx.scene.control.Alert; 14import javafx.scene.control.Alert.AlertType; 15import javafx.scene.control.Label; 16import javafx.scene.control.Menu; 17import javafx.scene.control.MenuBar; 18import javafx.scene.control.MenuItem; 19import javafx.scene.image.Image; 20import javafx.scene.input.KeyCode; 21import javafx.scene.input.KeyEvent; 22import javafx.scene.layout.BorderPane; 23import javafx.scene.layout.VBox; 24import javafx.scene.text.Font; 25import javafx.stage.Stage; 26import javafx.stage.StageStyle; 27 28public class TypeTrainer extends Application{ 29 30 Label aLabel = new Label("タイプ:"); 31 Label qLabel = new Label("問題:"); 32 Random rnd = null; 33 boolean fInPlay = false; 34 int point = 0; 35 int count = 0; 36 String qKey = ""; 37 String aKey = ""; 38 Instant expTime = null; 39 final int DURATION = 60; 40 41 @Override 42 public void start(Stage stage) throws Exception { 43 44 stage.setTitle("TypeTrainer"); 45 stage.initStyle(StageStyle.UTILITY); 46 stage.centerOnScreen(); 47 stage.setResizable(false); 48 49 rnd = new Random(Instant.now().getNano()); 50 51 MenuBar menuBar = new MenuBar(); 52 menuBar.setUseSystemMenuBar(true); 53 Menu fileMenu = new Menu("ファイル"); 54 MenuItem mnuStart = new MenuItem("スタート"); 55 mnuStart.setOnAction(event -> { 56 fInPlay = true; 57 expTime = Instant.now().plusSeconds(DURATION); 58 newQKey(); 59 60 }); 61 62 menuBar.getMenus().add(fileMenu); 63 MenuItem mnuExit = new MenuItem("終了"); 64 65 mnuExit.setOnAction(event->Platform.exit()); 66 67 fileMenu.getItems().addAll(mnuStart, mnuExit); 68 69 BorderPane root = new BorderPane(); 70 VBox center = new VBox(); 71 center.setSpacing(10); 72 qLabel.setFont(new Font(24)); 73 aLabel.setFont(new Font(24)); 74 aLabel.setFocusTraversable(false); 75 76 final Canvas canvas = new Canvas(); 77 Image img = new Image(Paths.get("KeyBoard.png").toUri().toString()); 78 canvas.setWidth(img.getWidth()); 79 canvas.setHeight(img.getHeight()); 80 GraphicsContext gc = canvas.getGraphicsContext2D(); 81 gc.drawImage(img, 0,0); 82 83 canvas.setOnKeyTyped(event-> keyTyped(event)); 84 canvas.setFocusTraversable(true); 85 center.setAlignment(Pos.CENTER); 86 center.getChildren().addAll(qLabel, canvas,aLabel); 87 root.setTop(menuBar); 88 root.setCenter(center); 89 90 stage.setScene(new Scene(root, 240, 195)); 91 stage.show(); 92 } 93 94 void keyTyped(KeyEvent event) 95 { 96 if(fInPlay == false) 97 return; 98 99 boolean fGood = true; 100 101 if(event.getCode() == KeyCode.ENTER) fGood = false; 102 if(event.getCode() == KeyCode.BACK_SPACE) fGood = false; 103 if(event.getCode() == KeyCode.DELETE) fGood = false; 104 if(event.getCode() == KeyCode.CLEAR) fGood = false; 105 if(fGood == false) { 106 Toolkit.getDefaultToolkit().beep(); 107 return; 108 } 109 110 111 aKey = event.getCharacter(); 112 aLabel.setText("タイプ:" + aKey); 113 if(aKey.equals(qKey)) 114 point += 1; 115 else 116 Toolkit.getDefaultToolkit().beep(); 117 if(Instant.now().isAfter(expTime)) 118 { 119 gameOver(); 120 return; 121 } 122 newQKey(); 123 } 124 125 void newQKey() 126 { 127 int ch = 0; 128 while(true) { 129 ch = rnd.nextInt(0x7a); 130 if (0x2f<ch && ch<0x3a) break; 131 if(0x40<ch && ch<0x5b) break; 132 if(0x60<ch && ch<0x7b) break; 133 134 } 135 if(Instant.now().isAfter(expTime)) 136 gameOver(); 137 138 qKey = String.valueOf((char)ch); 139 qLabel.setText("問題:" + qKey); 140 count += 1; 141 } 142 143 void gameOver() 144 { 145 fInPlay = false; 146 Alert dlg = new Alert(AlertType.INFORMATION); 147 dlg.setTitle("ゲームオーバー"); 148 dlg.setHeaderText(String.format("ゲームオーバー : 得点=%d / 回数=%d", point, count)); 149 150 dlg.showAndWait(); 151 } 152 public static void main(String[] args) { 153 launch(args); 154 155 } 156 157} 158

試したこと

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

0x2fがASCIIコード表でみると0である理由を知りたい。

0は0x30ですよ。10進数で言えば48
どちらも同じ数値です

投稿2022/12/25 11:43

編集2022/12/25 11:44
y_waiwai

総合スコア87782

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

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

Zuishin

2022/12/25 14:07

質問の意味がわからなければ本人に聞きましょう。 ソースコードの中で不等号とともに 0x2f を使っていて、それで '0' を判定しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問