Java中的Scanner和nextChar()


Scanner是`java.util`包中可用的一个类,用于从多个来源(如文件或控制台)获取输入。最常见的输入来源是标准输入,即键盘。Scanner类有一些方法可以从键盘获取基本类型和字符串的输入。

我们将通过这篇文章了解Scanner类及其各种方法。

Scanner和nextChar()

Scanner类使用以下方法获取输入:

  • nextInt() − 获取整数输入。

  • nextLong() − 获取长整型输入。

  • nextDouble() − 获取双精度浮点数输入。

  • nextFloat() − 获取单精度浮点数输入。

  • nextLine() − 获取字符串输入。

您可能已经注意到,Scanner类中没有nextChar()方法。通常,获取输入时,我们使用“next”后跟数据类型名称,但字符输入并非如此。我们使用next().charAt(0)来获取字符类型输入,而不是nextChar()。

我们同时使用next()和charAt(0)方法。next()方法可以获取字符串或数字输入,但为了将输入限制为单个字符数据类型,我们与它一起使用charAt(0)。参数0表示单个字符。

首先,让我们讨论如何创建Scanner,然后我们将看到nextChar()。

语法

Scanner nameOfobject = new Scanner(source);

参数

source − 您想要从中读取输入的来源。

实例

Scanner read = new Scanner(System.in);

在上面的示例中,我们创建了一个Scanner类的对象“read”,以及允许从键盘读取输入的源“System.in”。

创建Scanner后,我们可以使用其对象后跟点(.)运算符及其方法从指定的源获取输入并将值赋给相应的变量。

示例1

以下示例说明了如何使用Scanner类并从标准输入(即键盘)读取输入。

import java.util.Scanner;
public class Input {
   public static void main(String []args) {
      Scanner read = new Scanner(System.in);
      System.out.println("Enter integer value: ");
      int n1 = read.nextInt();
      System.out.println("Enter double value: ");
      double d1 = read.nextDouble();
      System.out.println("Enter float value: ");
      float f1 = read.nextFloat();
      System.out.println("Integer value: " + n1);
      System.out.println("Double value: " + d1);
      System.out.println("Float value: " + f1);
   }
}

输出

Enter integer value: 
9
Enter double value: 
236.555555
Enter float value: 
4.5
Integer value: 9
Double value: 236.555555
Float value: 4.5

在上面的代码中,我们从java.util包导入了Scanner类,以便在程序中使用Scanner。“sc”是Scanner的对象,“System.in”是创建的用于从键盘接收不同基本值的源。我们使用nextInt()、nextDouble()和nextFloat()分别接收整数、双精度浮点数和单精度浮点数的值。

示例2

在这个示例中,我们将使用nextLine()从键盘获取字符串类型输入并将值存储在字符串类型变量“st”中。

import java.util.Scanner;
public class Input {
   public static void main(String []args) {
      Scanner read = new Scanner(System.in);
      System.out.println("Enter a String: ");
      while(read.hasNext()) {
         String st = read.nextLine();
         System.out.println("String value: " + st);
      }
   }
}

输出

Enter a String: 
tutorialspoint
String value: tutorialspoint

示例3

在这个示例中,我们将使用next().charAt(0)从键盘获取字符类型输入。

import java.util.Scanner;
public class Input{
   public static void main(String[] args){
      Scanner read = new Scanner(System.in);
      System.out.println("Enter any character value: ");
      char chs = read.next().charAt(0);
      System.out.println("The entered value: " + chs);
   }
}

输出

Enter any character value: 
T
The entered value: T

如果我们使用nextChar()读取字符类型输入会怎样?让我们用一个例子看看。

示例3

import java.util.Scanner;
public class Input {
   public static void main(String[] args) {
      Scanner read = new Scanner(System.in);
      System.out.println("Enter any character value: ");
      char chs = read.nextchar();
      System.out.println("The entered value: " + chs);
   }
}

输出

Input.java:6: error: cannot find symbol
char chs = read.nextchar();
                       ^
  symbol:   method nextchar()
  location: variable read of type Scanner
1 error

我们得到这个错误是因为Java不支持nextChar()。

结论

在Java中,Scanner类支持nextInt()、nextFloat(),但不支持nextChar()。大多数新手都使用nextChar(),因为它听起来与用于读取输入的其他方法类似,但他们会因为nextChar()不受支持而报错。因此,我们试图通过这篇文章解释Scanner类,以消除所有疑问。

更新于:2023年5月5日

3000+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告