46

如何在 Java 的控制台中从用户那里获得简单的键盘输入(整数)?我使用这些java.io.*东西完成了这个,但它说它已被弃用。

我现在应该怎么做?

4

10 回答 10

74

您可以使用Scanner

先导入:

import java.util.Scanner;

然后你像这样使用。

Scanner keyboard = new Scanner(System.in);
System.out.println("enter an integer");
int myint = keyboard.nextInt();

旁注:如果您nextInt()nextLine()您一起使用可能会遇到一些麻烦,因为nextInt()没有读取输入的最后一个换行符,因此nextLine()不会以所需的行为执行。在上一个问题Skipping nextLine using nextInt中阅读有关如何解决它的更多信息。

于 2013-07-09T00:46:30.850 回答
21

您可以像这样使用 Scanner 类:

  import java.util.Scanner;

public class Main{
    public static void main(String args[]){

    Scanner scan= new Scanner(System.in);

    //For string

    String text= scan.nextLine();

    System.out.println(text);

    //for int

    int num= scan.nextInt();

    System.out.println(num);
    }
}
于 2013-07-09T00:47:06.520 回答
14

如果您想验证用户输入,也可以使用BufferedReader来实现,如下所示:

import java.io.BufferedReader;
import java.io.InputStreamReader; 
class Areas {
    public static void main(String args[]){
        float PI = 3.1416f;
        int r=0;
        String rad; //We're going to read all user's text into a String and we try to convert it later
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //Here you declare your BufferedReader object and instance it.
        System.out.println("Radius?");
        try{
            rad = br.readLine(); //We read from user's input
            r = Integer.parseInt(rad); //We validate if "rad" is an integer (if so we skip catch call and continue on the next line, otherwise, we go to it (catch call))
            System.out.println("Circle area is: " + PI*r*r + " Perimeter: " +PI*2*r); //If all was right, we print this
        }
        catch(Exception e){
            System.out.println("Write an integer number"); //This is what user will see if he/she write other thing that is not an integer
            Areas a = new Areas(); //We call this class again, so user can try it again
           //You can also print exception in case you want to see it as follows:
           // e.printStackTrace();
        }
    }
}

因为 Scanner 类不允许你这样做,或者不是那么容易......

并验证您使用“try-catch”调用。

于 2013-07-09T01:09:54.677 回答
10

您可以使用 Scanner 类

键盘读取(标准输入)您可以使用Scannerjava.util包中的一个类。

Scanner包用于获取原始类型的输入,例如int, doubleetc. 和strings. 这是在 Java 程序中读取输入的最简单方法,尽管效率不高。

  1. 要创建一个objectofScanner类,我们通常传递预定义的对象System.in,它代表标准输入流(键盘)。

例如,此代码允许用户从 System.in 中读取一个数字:

Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();

类中的一些公共方法Scanner

  • hasNext() 如果此扫描器在其输入中有另一个标记,则返回 true。
  • nextInt()将输入的下一个标记扫描为 int。
  • nextFloat()将输入的下一个标记扫描为浮点数。
  • nextLine()将此扫描器前进到当前行并返回被跳过的输入。
  • nextDouble()将输入的下一个标记扫描为双精度。
  • close()关闭此扫描仪。

有关Scanner 类中公共方法的更多详细信息。

例子:-

import java.util.Scanner;                      //importing class

class ScannerTest {
  public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);       // Scanner object

    System.out.println("Enter your rollno");
    int rollno = sc.nextInt();
    System.out.println("Enter your name");
    String name = sc.next();
    System.out.println("Enter your fee");
    double fee = sc.nextDouble();
    System.out.println("Rollno:" + rollno + " name:" + name + " fee:" + fee);
    sc.close();                              // closing object
  }
}
于 2018-06-07T20:31:13.423 回答
3

您可以使用 Scanner 获取下一行并对输入的行执行任何您需要执行的操作。您还可以使用 JOptionPane 弹出一个对话框询问输入。

扫描仪示例:

Scanner input = new Scanner(System.in);
System.out.print("Enter something > ");
String inputString = input.nextLine();
System.out.print("You entered : ");
System.out.println(inputString);

JOptionPane 示例:

String input = JOptionPane.showInputDialog(null,
     "Enter some text:");
JOptionPane.showMessageDialog(null,"You entered "+ input);

您将需要这些导入:

import java.util.Scanner;
import javax.swing.JOptionPane;

以上的一个完整的Java类

import java.util.Scanner;
import javax.swing.JOptionPane;
public class GetInputs{
    public static void main(String args[]){
        //Scanner example
        Scanner input = new Scanner(System.in);
        System.out.print("Enter something > ");
        String inputString = input.nextLine();
        System.out.print("You entered : ");
        System.out.println(inputString);

        //JOptionPane example
        String input = JOptionPane.showInputDialog(null,
        "Enter some text:");
        JOptionPane.showMessageDialog(null,"You entered "+ input);
    }
}
于 2014-01-31T18:36:52.840 回答
3

进口:import java.util.Scanner;

定义你的变量:String name; int age;

定义您的扫描仪:Scanner scan = new Scanner(System.in);

如果你想输入:

  • 文本:name = scan.nextLine();
  • 整数:age = scan.nextInt();

如果不再需要,请关闭扫描仪:scan.close();

于 2017-01-14T18:09:56.743 回答
2

如果你有 Java 6(你应该有,顺便说一句)或更高版本,那么只需执行以下操作:

 Console console = System.console();
 String str = console.readLine("Please enter the xxxx : ");

请记住:

 import java.io.Console;

而已!

于 2015-01-06T15:26:29.833 回答
1
import java.util.Scanner; //import the framework


Scanner input = new Scanner(System.in); //opens a scanner, keyboard
System.out.print("Enter a number: "); //prompt the user
int myInt = input.nextInt(); //store the input from the user

如果您有任何问题,请告诉我。相当不言自明。我评论了代码,以便您阅读。:)

于 2013-07-09T00:48:31.560 回答
1

添加行:

import java.util.Scanner;

然后创建一个Scanner类对象:

Scanner s = new Scanner(System.in);

现在您可以随时拨打电话:

int a = Integer.parseInt(s.nextLine());

这将从您的键盘存储integer值。

于 2014-10-08T16:49:55.193 回答
0

在 java 中,我们可以通过 6 种方式读取输入值:

  1. 扫描仪类
  2. 缓冲阅读器
  3. 控制台类
  4. 命令行
  5. AWT、字符串、图形用户界面
  6. 系统属性
  1. 扫描器类:存在于 java.util.* 中;包,它有很多方法,根据您的输入类型,您可以使用这些方法。一个。nextInt() b. nextLong() C. nextFloat() d. nextDouble() e. 下一个() f。下一条线();ETC...
import java.util.Scanner;
public class MyClass {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a :");
        int a = sc.nextInt();
        System.out.println("Enter b :");
        int b = sc.nextInt();
        
        int c = a + b;
        System.out.println("Result: "+c);
    }
}
  1. BufferedReader 类:存在于 java.io.* 中;package & 它有很多方法,从键盘读取值使用“readLine()”:这个方法一次读取一行。
import java.io.BufferedReader;
import java.io.*;
public class MyClass {
    public static void main(String args[]) throws IOException {
       BufferedReader br = new BufferedReader(new BufferedReader(new InputStreamReader(System.in)));
        System.out.println("Enter a :");
        int a = Integer.parseInt(br.readLine());
        System.out.println("Enter b :");
        int b = Integer.parseInt(br.readLine());
        
        int c = a + b;
        System.out.println("Result: "+c);
    }
}
于 2020-10-03T05:23:47.037 回答