Java 如何从用户获取输入

Java 如何从用户获取输入

输入和输出是任何编程语言的主要组成部分。键盘和屏幕是分别用于获取输入和输出的基本设备。用户输入对于使应用程序具有交互性非常重要。通过收集输入,Java程序可以自定义其输出,执行特定操作或根据不同用户的需求调整其功能。不同的Java包含其他类以从用户处获取输入。本文介绍了如何在Java中从用户处获取输入。

从用户处获取输入的方式

在Java程序中,有三种从用户处获取输入的方式。它们如下:

  • 使用Scanner类

  • 使用BufferedReader类

  • 使用Console类

Scanner类

Scanner类用于在Java中从用户处获取输入。这是最常用和最简单的从用户处获取输入的方式之一。它是java.util包的一部分。我们可以使用Scanner类获取原始类型的输入,如int、char、float、double等。读取起来更容易,因此是最常见的选择。

语法

Scanner scn=new Scanner(System.in);

导入java.util包对于使用Scanner类很重要。在上述语句中,我们创建了一个Scanner类构造函数,然后传递了System.in参数,使其能够从标准输入流中读取。

Scanner类的方法

nextInt() 用于读取并返回下一个整数值。
nextFloat() 用于读取并返回下一个浮点值。
nextDouble() 用于读取并返回下一个双精度值。
next() 用于读取并返回下一个单词值的String类型。
nextLine() 用于读取并返回下一个多个单词值的String类型。
nextLong() 用于读取并返回下一个长整型值。
nextShort() 用于读取并返回下一个短整型值。
nextByte() 用于读取并返回下一个字节值。
nextBoolean() 用于读取并返回下一个布尔值。

示例

以下是一个在Java中使用Scanner类获取用户输入的示例。

//import the java.util package
import java.util.*;

public class Main {
   public static void main(String args[])
   {
      // to take the input, use the Scanner Class
      Scanner scn = new Scanner(System.in);

      System.out.println("Enter your roll no");
      int roll_no = scn.nextInt(); //integer input

      System.out.println("Enter your name");
      String name= scn.next(); //String input

      System.out.println("Enter your marks");
      double marks = scn.nextDouble(); //double input
     System.out.println("Your roll no is- " + roll_no+" your name is- "+name+" and 
marks- "+marks);
   }
}

输出

以下是上述代码的输出结果

Enter your roll no
1
Enter your name
Sita
Enter your marks
99
Your roll no is- 1 your name is- Sita and marks- 99.0

解释

在上面的代码中,我们在Java中创建了一个Scanner类。我们以int、String和double的形式获取了三个不同的用户输入。获取输入后,我们将它们打印出来。

Scanner类的优点

  • 实现简单。

  • 方法简单。

Scanner类的缺点

  • 速度较慢。

  • 不同步,因此不适合多线程。

BufferedReader类

BufferedReader是Java中的另一个类,用于从用户获取输入。它在JDK 1.0中引入,是从用户获取输入的基本方法。它位于java.io包中。

语法

BufferedReader br= new BufferedReader(new InputStreamReader(System.in));

这意味着我们创建了一个BufferedReader对象。InputStreamReader类用于将输入的字节流转换为BufferedReader可以理解的字符流。System.in是标准输入,默认情况下是键盘。

readLine()方法用于读取行并将其存储为字符串。如果字符串需要转换为其他数据类型,则必须显式进行类型转换。

示例

以下是使用Java中的BufferedReader类获取用户输入的示例。

//import the java.io package
import java.io.*;

public class Main {
   public static void main(String args[]) throws IOException
   {
      // to take the input, use the BufferedReader Class
      BufferedReader br= new BufferedReader(new InputStreamReader(System.in));

      System.out.println("Enter your roll no");
      int roll_no = Integer.parseInt(br.readLine()); //integer input

      System.out.println("Enter your name");
      String name= br.readLine(); //String input

      System.out.println("Enter your marks");
      double marks = Double.parseDouble(br.readLine()); //double input

      System.out.println("Your roll no is- " + roll_no+" your name is- "+name+" and marks- "+marks);
   }
}

输出

以下是上述代码的输出:

Enter your roll no
1
Enter your name
Sita
Enter your marks
94
Your roll no is- 1 your name is- Sita and marks- 94.0

解释

创建了一个名为”br”的BufferedReader对象。它使用InputStreamReader类从用户获取输入,该类将输入的字节转换为字符。我们已经从用户那里获取了输入,但它的默认值是一个字符串。然后将其强制转换为所需的数据类型。

BufferedReader类的优点

  • 更快的性能。

  • 可以与多个线程一起使用。

BufferedReader类的缺点

  • 只能接受字符串输入,后续需要将其转换为所需的数据类型。

  • 可能需要导入多个库来使用BufferedReader类。

Console类

使用Console类是通过命令行从用户那里获取输入的另一种方法。这是在JDK 1.5中引入的,并且位于java.io包中。Console类非常有用,可以从控制台读取密码。而且,与其他方法相比,它的实例化更为简单。java.io.Console库对于Console类是必需的。

语法

Console c = System.console();

示例

以下是使用Java中的Console类获取用户输入的示例。

//import the java.io package
import java.io.*;

public class Main {
   public static void main(String args[]) throws IOException
   {
      System.out.println("Enter your roll no");
      int roll_no = Integer.parseInt(System.console().readLine()); //integer input

      System.out.println("Enter your name");
      String name = System.console().readLine();

      System.out.println("Enter your marks");
      double marks = Double.parseDouble(System.console().readLine()); //double input

      System.out.println("Your roll no is- " + roll_no+" your name is- "+name+" and marks- "+marks);
   }
}

输出

以下是上述代码的输出结果 –

Enter your roll no
1
Enter your name
Sita
Enter your marks
96
Your roll no is- 1 your name is- Sita and marks- 96.0

解释

在上述代码中,我们直接使用System.console()函数读取了用户输入。

Console类的优点

  • 可以安全地输入密码,因为在输入过程中密码是不可见的。

  • 这个类使用了同步方法。

BufferedReader类的缺点

  • 不能在像IDE这样的环境中使用,因为所有的输入都不会一次给出。

因此,我们了解了如何在Java中从用户那里获取输入。根据个人偏好,我们可以选择使用其中任何一个。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程