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

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

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

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

3052閲覧

JAVA try catch intの範囲外だった場合の例外

退会済みユーザー

退会済みユーザー

総合スコア0

JavaFX

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/08/07 02:30

編集2020/08/07 02:43

前提・実現したいこと

文字列か数値かの判定ののち、文字数の判定をしたあと表示をするプログラムですが
Integer.parseIntの判定の範囲外(intの範囲外?)になってしまうとisCodeでfalseが返ってきてしまい
2147483648以上の場合そのまま表示されてしまいます。
条件文が思いつかないのでtry catchでエラーメッセージを出そうかと思っています。
どう例外処理を書けばよいのでしょうか?

理想は条件文内ですべて完結させることです。(int範囲外(2147483648以上)の数値になってしまっても8桁で揃える処理を実行)
・数値だったら8桁以内 0埋め
・文字列だったらそのまま表示

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

例外処理を通ってくれません

該当のソースコード

java

1 2 3try { 4 if (!isCode(txtCode.getText())) { //false 文字列なら何もしない 5 s = txtCode.getText(); 6 7 } else if (txtCode.getText().length() < 8 && isCode(txtCode.getText()) ) { 8 s = "00000000" + txtCode.getText(); 9 s = s.substring(s.length() - 8); 10 11 } else if (txtCode.getText().length() > 8 && isCode(txtCode.getText())) { 12 s = (txtCode.getText().substring(0, 8)); 13 14 } 15 16 //ここの例外処理の修正 17 } catch ( Exception e ) { 18 Alert alrt = new Alert(AlertType.ERROR); //アラートを作成 19 alrt.setTitle("エラー"); 20 alrt.setHeaderText(null); 21 alrt.setContentText("内容 : 入力範囲外です。"); 22 alrt.showAndWait(); 23 return; 24 } 25 26 System.out.println(s); 27 txtCode.setText(""); //クリアする 28 } 29 30//商品コードチェック(数値に変換可能か、文字列か) 31 public boolean isCode(String c) { 32 try { 33 Integer.parseInt(c); 34 35 } catch (NumberFormatException e) { 36 return false; 37 } 38 return true; 39 } 40 41

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

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

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

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

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

m.ts10806

2020/08/07 02:36

あ、被った。失礼。
退会済みユーザー

退会済みユーザー

2020/08/07 02:37

これで大丈夫でしょうか・・・?
m.ts10806

2020/08/07 02:38 編集

そもそもINTの最大値は2147483648なので、「8桁」ではないです。 どんな問題が起きて今回の対応をしようとしているのでしょうか。 前提や背景を具体的に記載してください。
m.ts10806

2020/08/07 02:39

> これで大丈夫でしょうか・・・? インデントぐちゃぐちゃなのできちんとコードフォーマットしてもらいたいのと ```Java のように冒頭に言語名を入れてもらいたいのと。
guest

回答1

0

ベストアンサー

「文字列か数値かの判定」をするのではなく、正規表現などで「数字だけで構成される文字列」かどうかを判定する、というほうが目的にあっているのではないでしょうか。

投稿2020/08/07 02:37

maisumakun

総合スコア145930

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

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

退会済みユーザー

退会済みユーザー

2020/08/07 02:52

正規表現を使用したらint範囲外の例外は解決しますか?
maisumakun

2020/08/07 02:57 編集

回避できます(Integer.parseIntを行わない形とすれば、当然それが例外を生むこともありません)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問