如何从 Java 中的标准输入读取整数值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2506077/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-13 08:36:01  来源:igfitidea点击:

How to read integer value from the standard input in Java

javaio

提问by Nehil Verma

What class can I use for reading an integer variable in Java?

我可以使用什么类来读取 Java 中的整数变量?

回答by thelost

Check this one:

检查这个:

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

回答by polygenelubricants

You can use java.util.Scanner(API):

您可以使用java.util.ScannerAPI):

import java.util.Scanner;

//...

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

It can also tokenize input with regular expression, etc. The API has examples and there are many others in this site (e.g. How do I keep a scanner from throwing exceptions when the wrong type is entered?).

它还可以使用正则表达式等对输入进行标记化。API 有示例,本站点还有许多其他示例(例如,当输入错误类型时,如何防止扫描仪抛出异常?)。

回答by missingfaktor

If you are using Java 6, you can use the following oneliner to read an integer from console:

如果您使用的是 Java 6,则可以使用以下 oneliner 从控制台读取整数:

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

回答by Srivastav

Here I am providing 2 examples to read integer value from the standard input

在这里,我提供了 2 个示例来从标准输入读取整数值

Example 1

示例 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);
   }
 }

Example 2

示例 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);
     }
 }

I prefer the First Example, it's easy and quite understandable.
You can compile and run the JAVA programs online at this website: http://ideone.com

我更喜欢第一个例子,它很容易理解。
您可以在这个网站上在线编译和运行 JAVA 程序:http: //ideone.com

回答by Najib Tounsi

Second answer above is the most simple one.

上面的第二个答案是最简单的一个。

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

The question is "How to read from standard input".

问题是“如何从标准输入读取”。

A console is a device typically associated to the keyboard and display from which a program is launched.

控制台是一种通常与键盘和显示器相关联的设备,从中启动程序。

You may wish to test if no Java console device is available, e.g. Java VM not started from a command line or the standard input and output streams are redirected.

您可能希望测试是否没有可用的 Java 控制台设备,例如 Java VM 不是从命令行启动或标准输入和输出流被重定向。

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

Using console is a simple way to input numbers. Combined with parseInt()/Double() etc.

使用控制台是一种输入数字的简单方法。结合 parseInt()/Double() 等。

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

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

回答by madhav

check this one:

检查这个:

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

回答by Tapper7

This causes headaches so I updated a solution that will run using the most common hardware and software tools available to users in December 2014. Please note that the JDK/SDK/JRE/Netbeans and their subsequent classes, template libraries compilers, editors and debuggerz are free.

这会让人头疼,所以我更新了一个解决方案,该解决方案将在 2014 年 12 月使用用户可用的最常见的硬件和软件工具运行。请注意 JDK/SDK/JRE/Netbeans 及其后续类、模板库编译器、编辑器和调试器是自由。

This program was tested with Java v8 u25. It was written and built using
Netbeans IDE 8.0.2, JDK 1.8, OS is win8.1 (apologies) and browser is Chrome (double-apologies) - meant to assist UNIX-cmd-line OG's deal with modern GUI-Web-based IDEs at ZERO COST - because information (and IDEs) should always be free. By Tapper7. For Everyone.

该程序已使用 Java v8 u25 进行测试。它是使用
Netbeans IDE 8.0.2、JDK 1.8编写和构建的,操作系统是 win8.1(道歉),浏览器是 Chrome(双重道歉)——旨在帮助 UNIX-cmd-line OG 处理基于 GUI-Web 的现代零成本的 IDE - 因为信息(和 IDE)应该始终是免费的。通过 Tapper7。为了所有人。

code block:

代码块:

    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