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

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

ただいまの
回答率

90.34%

  • Java

    14423questions

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

複数の数字の入力方法について

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 138

fadss

score 3

1つの数字を入力するし表示するプログラムはできたのですが複数を入力するにはどこを変更すればよいのでしょうか

public class Main{
    public static void main(String[] args){
    Input in = new Input();
    double n = in.inputDouble("実数を入力してください:");
    System.out.println("入力された実数 "+ n +"です。");
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Input{
    private String prompt;
    private final String ERROR_INPUT_DOUBLE = "入力値は実数ではありません。";
    private final String ERROR_INPUT = "エラー:入力に誤りがあります。";
    private void setPrompt(String prompt){
    this.prompt = prompt;
    }
    private String input() throws IOException{
           String line;
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    line = reader.readLine();
           return line;
    }

    public double inputDouble(String prompt){
    this.setPrompt(prompt);
    System.out.println(this.prompt);
    try{
        String value = this.input();
        double n = Double.parseDouble(value);
        return n;
    }catch(Exception s){
        System.out.println(ERROR_INPUT_DOUBLE);
        return this.inputDouble(prompt);
    }
    }

    public String inputString(String prompt){
    this.setPrompt(prompt);
    System.out.println(this.prompt);
    try{
        String n = this.input();
        return n;
    }catch(Exception s){
        System.out.println(ERROR_INPUT);
        return this.inputString(prompt);
    }
    }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

0

例えばforループを使えばよいです。

for(int i = 0; i < 繰り返す回数; ++i) {
    double n = in.inputDouble("実数を入力してください:");
    System.out.println("入力された実数 "+ n +"です。");
}

Inputクラスはちょっと改善の余地がありそうです。

  • メソッドが呼ばれる度にバッファを開く設計であること
  • フィールドpromptの存在意義が不明であること
  • IOExceptionが握り潰されること

コメントを受けて

例えば「4つ実数を入力してください」として4つの数を一気に入力させるにはどのようにすれば良いでしょうか?

同列に扱うべき入力なら (例:身長など)
配列に押し込めばよいかと。余力があればListを利用しても良いです。

double[] data = new double[4];
for(int i = 0; i < data.length; ++i) {
    略
}

同列に扱うべきでない入力なら (例:立方体の各片長など)
それぞれ変数を用意した方が良いです。

double width, depth, height;

width  = 略;
depth  = 略;
height = 略;

また、Inputクラスの利用に拘らないなら、Stars1024さんの回答のようにしても良いです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/23 20:55

    返信ありがとうございます
    例えば「4つ実数を入力してください」として4つの数を一気に入力させるにはどのようにすれば良いでしょうか?

    キャンセル

  • 2018/06/23 20:56

    一気に入力させ、配列やリストに押し込みたいということでしょうか?

    キャンセル

  • 2018/06/23 21:17

    そうです!お願いしますm(_ _)m

    キャンセル

  • 2018/06/23 21:58

    すみませんどこら辺に差し込めばいいのでしょうか。。。

    キャンセル

  • 2018/06/23 22:08

    Mainクラスのどこかです。
    略記した部分でInputクラスのメソッドを利用します。

    キャンセル

  • 2018/06/23 22:14

    ありがとうございます

    キャンセル

0

数字を入力するところを複数書く、あるいはループさせる、というはなしになりますね

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-2

「4つ実数を入力してください」として4つの数を一気に入力させるにはどのようにすれば良いでしょうか?

例えば 1.0 2.0 3.0 4.0 と入力した場合,
(1)これを文字列として受け取り、
(2)split関数を使い,空白区切りで一つずつ分けて
(3)Integer.parseInt();でint型に変換すればいいと思います。

(なお、4という入力する数字の個数を汎用的にしたい場合は4のところをresultArray.lengthに変えればいいでしょう。)

配列に格納するのは蛇足の気もしますが、後で他の処理をする場合も考えて配列に格納しました。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // Your code here!
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        String []resultArray = line.split(" "); 
        double []data = new double[4];
        for(int i = 0; i < 4; i++){
            data[i] = Double.parseDouble(resultArray[i]);
        }
        for(int i = 0; i < 4; i++){
            System.out.println(data[i]);
        }
    }
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Java

    14423questions

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