Javaの標準入力から整数値を読み取る方法


回答:


141

java.util.ScannerAPI)を使用できます。

import java.util.Scanner;

//...

Scanner in = new Scanner(System.in);
int num = in.nextInt();

正規表現などで入力をトークン化することもできます。APIには例があり、このサイトには他にもたくさんあります(たとえば、間違ったタイプが入力されたときにスキャナーが例外をスローしないようにするにはどうすればよいですか?)。


1
構文エラーなしでEclipse IDで実行しようとしていますが、読み取り整数値を出力しようとすると、コンソール出力に何も表示されません。これはなぜですか?
rh979 14

@polygenelubricants:in.nextInt()は整数値ではなく整数値のみを受け入れます
Ved Prakash

31

Java 6を使用している場合は、次のワンライナーを使用してコンソールから整数を読み取ることができます。

int n = Integer.parseInt(System.console().readLine());

17
ほとんどのIDEでは、アプリケーションがランチャーを介して呼び出されるとSystem.consoleがnullを返し、デバッグが困難になることをコメントしておきます。これは、IDEA、Eclipse、およびNetBeansに当てはまるようです。
Andrew White

1
文字列または「Enter」を入力すると、NumberFormatExceptionがスローされます。そのため、文字列をIntegerに解析する前に文字列を制御することをお
勧めします

その行にスペースで区切られた複数の整数がある場合はどうなりますか?
LostMohican 2015年

@LostMohican、スキャナーを使用して空白で区切られたトークンを読み取る方法があります。
missingfaktor 2015年

17

ここでは、標準入力から整数値を読み取る2つの例を提供しています。

例1

import java.util.Scanner;
public class Maxof2
{ 
  public static void main(String args[])
  {
       //taking value as command line argument.
        Scanner in = new Scanner(System.in); 
       System.out.printf("Enter i Value:  ");
       int i = in.nextInt();
       System.out.printf("Enter j Value:  ");
       int j = in.nextInt();
       if(i > j)
           System.out.println(i+"i is greater than "+j);
       else
           System.out.println(j+" is greater than "+i);
   }
 }

例2

public class ReadandWritewhateveryoutype
{ 
  public static void main(String args[]) throws java.lang.Exception
  {
System.out.printf("This Program is used to Read and Write what ever you type \nType  quit  to Exit at any Moment\n\n");
    java.io.BufferedReader r = new java.io.BufferedReader (new java.io.InputStreamReader (System.in));
     String hi;
     while (!(hi=r.readLine()).startsWith("quit"))System.out.printf("\nYou have typed: %s \n",hi);
     }
 }

私は最初の例を好みます、それは簡単で非常に理解できます。
次のWebサイトで、JAVAプログラムをオンラインでコンパイルして実行できます:http : //ideone.com


1
ex 2は、入力ストリームを導入するための最良の方法ではないかもしれません...または、「システムの入力オブジェクト」をOOD、Java、またはその問題のコーディングに不慣れな人に推測します-すべての説明コードとキーオブジェクトに名前を付けます " r "....賢い人、え?xD +1
Tapper7 2016年

1
例1は、誤ったフォーマット入力から保護されていません
Martin Meeser

11

これをチェックしてください:

public static void main(String[] args) {
    String input = null;
    int number = 0;
    try {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        input = bufferedReader.readLine();
        number = Integer.parseInt(input);
    } catch (NumberFormatException ex) {
       System.out.println("Not a number !");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

をキャッチしNumberFormatExceptionてスタックトレースを出力する意味は何ですか?
missingfaktor 2010年

6

上記の2番目の答えは最も単純なものです。

int n = Integer.parseInt(System.console().readLine());

質問は「標準入力からの読み方」です。

コンソールは、プログラムが起動されるキーボードとディスプレイに通常関連付けられているデバイスです。

コマンドラインから起動されていないJava VMや、標準の入出力ストリームがリダイレクトされているなど、Javaコンソールデバイスが使用できないかどうかをテストすることもできます。

Console cons;
if ((cons = System.console()) == null) {
    System.err.println("Unable to obtain console");
    ...
}

コンソールを使用すると、数値を簡単に入力できます。parseInt()/ Double()などと組み合わせる

s = cons.readLine("Enter a int: ");
int i = Integer.parseInt(s);    

s = cons.readLine("Enter a double: ");
double d = Double.parseDouble(s);

2
質問に答えない場合は-1。彼はコンソールからではなく、標準入力から読みたいと思っています。
インゴ2013年

質問は明らかに彼がコンソールから読みたくないと述べています。とにかく、コンソールからの読み方に関する情報を提供してくれてありがとう。
Srivastav 2013年

4

これをチェックしてください:

import java.io.*;
public class UserInputInteger
{
        public static void main(String args[])throws IOException
        {
        InputStreamReader read = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(read);
        int number;
                System.out.println("Enter the number");
                number = Integer.parseInt(in.readLine());
    }
}

3

これにより問題が発生したため、2014年12月にユーザーが利用できる最も一般的なハードウェアおよびソフトウェアツールを使用して実行するソリューションを更新しました。JDK/ SDK / JRE / Netbeansとその後のクラス、テンプレートライブラリコンパイラ、エディター、デバッガーは、自由。

このプログラムは、Java v8 u25でテストされています。これは
、Netbeans IDE 8.0.2、JDK 1.8、OSはwin8.1(謝罪)、ブラウザはChrome(二重謝罪)を使用して作成および構築されました-UNIX-cmd-line OGと最新のGUI-Webベースの取引を支援することを目的としていますZERO COSTのIDE-情報(およびIDE)は常に無料であるべきだから。Tapper7による。すべての人のために。

コードブロック:

    package modchk; //Netbeans requirement.
    import java.util.Scanner;
    //import java.io.*; is not needed Netbeans automatically includes it.           
    public class Modchk {
        public static void main(String[] args){
            int input1;
            int input2;

            //Explicity define the purpose of the .exe to user:
            System.out.println("Modchk by Tapper7. Tests IOStream and basic bool modulo fxn.\n"
            + "Commented and coded for C/C++ programmers new to Java\n");

            //create an object that reads integers:
            Scanner Cin = new Scanner(System.in); 

            //the following will throw() if you don't do you what it tells you or if 
            //int entered == ArrayIndex-out-of-bounds for your system. +-~2.1e9
            System.out.println("Enter an integer wiseguy: ");
            input1 = Cin.nextInt(); //this command emulates "cin >> input1;"

            //I test like Ernie Banks played hardball: "Let's play two!"
            System.out.println("Enter another integer...anyday now: ");
            input2 = Cin.nextInt(); 

            //debug the scanner and istream:
            System.out.println("the 1st N entered by the user was " + input1);
            System.out.println("the 2nd N entered by the user was " + input2);

            //"do maths" on vars to make sure they are of use to me:
            System.out.println("modchk for " + input1);
            if(2 % input1 == 0){
                System.out.print(input1 + " is even\n"); //<---same output effect as *.println
                }else{
                System.out.println(input1 + " is odd");
            }//endif input1

            //one mo' 'gain (as in istream dbg chk above)
            System.out.println("modchk for " + input2);
            if(2 % input2 == 0){
                System.out.print(input2 + " is even\n");
                }else{
                System.out.println(input2 + " is odd");
            }//endif input2
        }//end main
    }//end Modchk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.