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

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

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

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

Q&A

解決済

4回答

5784閲覧

適切な整数が入力されるまで繰り返したい。

souhan

総合スコア8

Java

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

0グッド

0クリップ

投稿2018/04/25 15:38

編集2018/04/26 09:15

指定されている数値以外が入力された際に、適切な数値が入力されるまで条件を繰り返すコードを書いているのですが、上手くいかずでこんがらがっている状態です。
※適切な整数とは1、2、3、のどれかを指しています。

該当のソースコード

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Sample1 {
public static void main(String[] args) throws IOException {
System.out.println("番号を入力して下さい");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); if (str.equals("1")) { System.out.println("1が入力されました"); } else if (str.equals("2")) { System.out.println("2が入力されました"); } else if (str.equals("3")) { System.out.println("3が入力されました"); }else {

             System.out.println("入力をやり直してください。");
}
}

}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

このコードに繰り返し文を追加したいと思っています。
よろしければ解説等も加えていただけると、励みになります。
お手数ですがご教授お願いします。

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

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

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

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

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

LouiS0616

2018/04/25 15:39

『適切な数値』とは何でしょうか。
souhan

2018/04/25 15:42

1か2か3の数値です。
m.ts10806

2018/04/26 01:18 編集

回答のために必要な情報であるため、質問に追記してください。また、プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。
guest

回答4

0

ベストアンサー

java

1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4 5public class Sample1 { 6 public static void main(String[] args) throws IOException { 7 System.out.println("番号を入力して下さい"); 8 9 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 String str = br.readLine(); 11 12 while(true){ 13 switch(str) { 14 case:"1": 15 case:"2": 16 case:"3": 17 System.out.println(str + "が入力されました"); 18 break; 19 default: 20 System.out.println("入力をやり直してください。"); 21 continue; 22 } 23 break; 24 } 25 26 } 27 28}

投稿2018/04/26 14:37

swordone

総合スコア20651

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

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

souhan

2018/04/27 04:38

回答ありがとうございます! 今回はこちらの回答をベストアンサーとさせていただきます! 本当にありがとうございました
guest

0

上記だけなら、do {} while()で、、、

Java

1string str; 2do { 3 str = br.readLine(); 4 .....(何か) 5} while (!(str.equals("1") || str.equals("2") || str.equals("3"));

あたりかと。

投稿2018/04/26 14:36

pepperleaf

総合スコア6383

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

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

souhan

2018/04/27 04:35

回答ありがとうございます! 書いていただいたコードが見やすくて助かります。 勉強になります!ありがとうございました
guest

0

素直に無限ループするならこのようになるのではないでしょうか。

Java

1int val; 2while(true) { 3 String str = br.readLine(); 4 5 if(strが1あるいは2あるいは3) { 6 val = Integer.valueOf(str); 7 break; 8 } 9 10 以下略 11}

問題はstrが1あるいは2あるいは3をどう表現するか、ということです。

  • 逐一if文でチェックして、同じ処理を何度も書く
  • 論理和を用いて複合的な条件を記述する
  • strが{"1", "2", "3"}に含まれるか、という論理に置き換える

ざっと考えただけでこんな感じです。
今の実力で、自力で書けそうなものを試してみると良いでしょう。

コードの書き方について

teratailには、上記のようにコードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
Java

投稿2018/04/25 15:53

編集2018/04/25 15:59
LouiS0616

総合スコア35660

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

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

rtr1950x

2018/04/26 14:23

> 問題はstrが1あるいは2あるいは3をどう表現するか、ということです。 「strを整数に変換して、1以上3以下かどうか判定する」という手も使えそうですね。
LouiS0616

2018/04/26 14:29

@asahina1979 さん そのページ、メンテナンスされていないようで読みづらく感じるのですよね... とは言え、ページのご紹介ありがとうございます。 @rtr1950x さん その手も使えると思いますが、実は意図的に省きました。 1, 2, 3 しか受け付けないと言うことは、モードか何かを指しているのかな?と思ったからです。 --- お二方とも、コメントありがとうございます。
souhan

2018/04/27 04:33

回答ありがとうございます。 こういったやり方ももあるのですね! 非常に勉強になります、ありがとうございました!
guest

0

google で "java 入力 繰り返し" を検索してみてください。
teratail での他の類似質問を含めたくさんヒットします。

それらの情報から、じぶんに一番しっくりする方法でコーディングしてみてください。

投稿2018/04/26 17:59

katoy

総合スコア22324

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

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

souhan

2018/04/27 04:39

回答ありがとうございます! 自分の検索の仕方が下手だと思い知りました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問