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

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

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

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

Q&A

1回答

468閲覧

How to Simplify Java Code Input

Adisharma

総合スコア12

Java

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

0グッド

0クリップ

投稿2022/04/07 09:54

Hello Everyone, Can anyone know, How can I simplify this code? I check every input for an error, but I think the code is duplicated. I am using this java compiler - https://www.interviewbit.com/online-java-compiler/ Can anyone suggest whats wrong with this code?

long houseNumberOfFloors; while (true) { System.out.print("Enter valid house number of floors: "); try { houseNumberOfFloors = Long.parseLong(br.readLine()); } catch (NumberFormatException e) { continue; } if (FlatAttrValidator.checkHouseNumberOfFloors(houseNumberOfFloors)) { break; } } Integer houseNumberOfLifts; while (true) { System.out.print("Enter valid house number of lifts: "); try { houseNumberOfLifts = Integer.parseInt(br.readLine()); } catch (NumberFormatException e) { continue; } if (FlatAttrValidator.checkHouseNumberOfLifts(houseNumberOfLifts)) { break; } }

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

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

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

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

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

jimbe

2022/04/07 11:42

What is the code for the FlatAttrValidator class?
guest

回答1

0

Is this simple?
I don't know if it works in an online environment.

java

1import java.io.*; 2 3public class Main { 4 public static void main(String[] args) throws IOException { 5 try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { 6 7 long houseNumberOfFloors = inputAndCheck(br, "Enter valid house number of floors: ", 8 Long::parseLong, FlatAttrValidator::checkHouseNumberOfFloors); 9 10 int houseNumberOfLifts = inputAndCheck(br, "Enter valid house number of lifts: ", 11 Integer::parseInt, FlatAttrValidator::checkHouseNumberOfLifts); 12 13 System.out.println("houseNumberOfFloors=" + houseNumberOfFloors); 14 System.out.println("houseNumberOfLifts=" + houseNumberOfLifts); 15 } 16 } 17 18 interface Parser<T> { 19 T parse(String s); 20 } 21 interface Validator<T> { 22 boolean validate(T v); 23 } 24 static <T> T inputAndCheck(BufferedReader br, String prompt, Parser<T> parser, Validator<T> validator) throws IOException { 25 while(true) { 26 System.out.print(prompt); 27 try { 28 T v = parser.parse(br.readLine()); 29 if(validator.validate(v)) return v; 30 } catch (NumberFormatException e) { 31 //continue; 32 } 33 } 34 } 35} 36 37class FlatAttrValidator { 38 static boolean checkHouseNumberOfFloors(long v) { 39 return v > 0; 40 } 41 static boolean checkHouseNumberOfLifts(int v) { 42 return v < 0; 43 } 44}

plain

1Enter valid house number of floors: abc 2Enter valid house number of floors: 0 3Enter valid house number of floors: 1 4Enter valid house number of lifts: abc 5Enter valid house number of lifts: 0 6Enter valid house number of lifts: -1 7houseNumberOfFloors=1 8houseNumberOfLifts=-1

投稿2022/04/07 12:14

編集2022/04/08 09:14
jimbe

総合スコア12623

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問