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

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

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

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

Q&A

解決済

2回答

8833閲覧

java null チェック判定について

zero1na

総合スコア11

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

0グッド

0クリップ

投稿2019/07/20 11:30

以下ソースコードについてです。
要件としてはキーボード入力したデータの判定チェックをしたいです。
1.0点~100点以外の入力はエラー ← ok
2.数字以外の場合はエラー ← ok
3.空白の場合はエラー ← これが以下ソースでは実装できず困ってます・・

try{
Integer inParam2 = Integer.valueOf(bufReader.readLine());
//0点以下、100点以上はエラーMSGを返す
if(inParam2 < 0 || inParam2 > 100 ){
System.out.println("0点~100点の間で入力してください");
System.exit(1);
}else if (inParam2 == null){
System.out.println("点数は必須項目です。");
System.exit(1);
}else{
recordMap.put("国語",inParam2);
}
//数字以外をチェック
} catch (NumberFormatException e) {
System.out.println("数字を入れてください");
System.exit(1);
}

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

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

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

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

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

guest

回答2

0

ベストアンサー

空白を入力した際、Integer.valueOfがnullを返すというのは確かなのでしょうか。

Java

1jshell> Integer.valueOf("") 2| java.lang.NumberFormatException thrown: For input string: "" 3| at NumberFormatException.forInputString (NumberFormatException.java:65) 4| at Integer.parseInt (Integer.java:662) 5| at Integer.valueOf (Integer.java:983) 6| at (#1:1) 7 8jshell> Integer.valueOf(" ") 9| java.lang.NumberFormatException thrown: For input string: " " 10| at NumberFormatException.forInputString (NumberFormatException.java:65) 11| at Integer.parseInt (Integer.java:638) 12| at Integer.valueOf (Integer.java:983) 13| at (#2:1) 14 15jshell> Integer.valueOf("\n") 16| java.lang.NumberFormatException thrown: For input string: " 17" 18| at NumberFormatException.forInputString (NumberFormatException.java:65) 19| at Integer.parseInt (Integer.java:638) 20| at Integer.valueOf (Integer.java:983) 21| at (#3:1) 22 23jshell>

Integer.valueOfに放り込む前に分岐すれば良いかと。

Java

1String line = bufReader.readLine(); 2if(lineが不適切) { 3 エラーを吐く; 4} 5 6// 数値化できるか、範囲が適正かどうかはこの行以降の判定 7Integer inParam2 = Integer.valueOf(line);

投稿2019/07/20 11:44

LouiS0616

総合スコア35658

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

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

zero1na

2019/07/20 12:03

ありがとうございます! 見事うまくいきました。
guest

0

いろいろな入力文字パターンでテストできるように書いてみました。

java

1package teratail; 2 3import java.util.regex.Matcher; 4import java.util.regex.Pattern; 5 6public class Kadai1 { 7 private static Pattern NUM_PATTERN = Pattern.compile("^[0-9]{1,3}$"); 8 9 private static int parseInt(String str) { 10 if (!NUM_PATTERN.matcher(str).find()) { 11 throw new IllegalArgumentException("数字だけを3桁以下で入力してください。"); 12 } 13 int num = Integer.parseInt(str); 14 if (num < 0 || 100 < num) { 15 throw new IllegalArgumentException("0点~100点の間で入力してください"); 16 } 17 return num; 18 } 19 20 public static void main(String[] args) { 21 String[] TESTS = { 22 "-1" , "0", "1", "99", "100", "101", 23 "000", "0100", "+100", 24 "", " ", "A", "50A", " 1", "1 " 25 }; 26 for (String str : TESTS) { 27 System.out.print("[" + str + "] -> "); 28 try { 29 int data = parseInt(str); 30 System.out.println("点数:" + data); 31 } catch ( IllegalArgumentException e) { 32 System.out.println(e.getMessage()); 33 } 34 } 35 } 36}

実行例

イメージ説明
どのような文字列の入力を正当とみなすか、不当な入力に対してどのようなエラー、エッセージを出すかは仕様をきめ、それに従ってプログラミングする必要があります。

投稿2019/07/21 11:41

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問