Java의 표준 입력에서 정수 값을 읽는 방법


109

Java에서 정수 변수를 읽는 데 어떤 클래스를 사용할 수 있습니까?

답변:


141

java.util.Scanner( API )를 사용할 수 있습니다 .

import java.util.Scanner;

//...

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

또한 정규식 등으로 입력을 토큰화할 수 있습니다. API에는 예제가 있으며이 사이트에는 다른 많은 항목이 있습니다 (예 : 잘못된 유형이 입력 될 때 스캐너가 예외를 던지지 않도록하려면 어떻게합니까? ).


1
구문 오류없이 이클립스 ID에서 실행하려고하지만 읽기 정수 값을 출력하려고 할 때 콘솔 출력에 아무것도 표시하지 않습니다. 왜 그렇습니까?
rh979

@polygenelubricants : in.nextInt ()뿐만 아니라 정수 값 INT 값을 수락
VED 프라 카쉬

31

Java 6을 사용하는 경우 다음 oneliner를 사용하여 콘솔에서 정수를 읽을 수 있습니다.

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

17
대부분의 IDE에서 System.console은 응용 프로그램이 실행기를 통해 호출되어 디버그하기 어렵게 만들 때 null을 반환한다는 점을 언급하고 싶습니다. 이것은 IDEA, Eclipse 및 NetBeans에 해당하는 것 같습니다.
Andrew White

1
그가 문자열 또는 'Enter'를 입력하면 NumberFormatException이 발생합니다. 그것은 정수로 구문 분석하기 전에 문자열을 제어하는 것이 좋습니다 그래서
실레 Surdu

그 줄에 공백으로 구분 된 정수가 둘 이상 있으면 어떻게 될까요?
LostMohican 2015 년

@LostMohican, Scanner를 사용하여 공백으로 구분 된 토큰을 읽는 방법이 있습니다.
missingfaktor

17

여기에서는 표준 입력에서 정수 값을 읽는 두 가지 예를 제공합니다.

예 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);
     }
 }

저는 첫 번째 예를 선호합니다. 쉽고 이해하기 쉽습니다.
다음 웹 사이트에서 온라인으로 JAVA 프로그램을 컴파일하고 실행할 수 있습니다. http://ideone.com


1
ex 2는 입력 스트림을 소개하는 가장 좋은 방법이 아닐 수도 있습니다. 또는 OOD, Java 또는 코딩을 처음 접하는 사람에게 "시스템의 입력 객체"를 추측합니다. 모든 설명 코드를 사용하고 키 객체의 이름을 " r ".... 현명한 사람, 응? xD +1
Tapper7 2016

1
예제 1은 잘못된 형식 입력으로부터 보호되지 않습니다
Martin Meeser 2017-09-13

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

위의 두 번째 대답은 가장 간단한 대답입니다.

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

질문은 "표준 입력에서 읽는 방법"입니다.

콘솔은 일반적으로 프로그램이 시작되는 키보드 및 디스플레이와 관련된 장치입니다.

사용할 수있는 Java 콘솔 장치가 없는지 테스트 할 수 있습니다. 예를 들어 Java VM이 명령 줄에서 시작되지 않았거나 표준 입력 및 출력 스트림이 리디렉션됩니다.

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. 그는 콘솔에서 읽는 것이 아니라 표준 입력에서 읽기를 원합니다.
Ingo

질문은 그가 콘솔에서 읽기를 원하지 않는다는 것을 분명히 말합니다. 어쨌든 콘솔에서 읽는 방법에 대한 정보를 제공해 주셔서 감사합니다.
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 웹 기반 거래를 지원하기위한 것입니다. 제로 비용의 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.