前提・実現したいこと
文字列か数値かの判定ののち、文字数の判定をしたあと表示をするプログラムですが
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
回答1件
あなたの回答
tips
プレビュー