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()来读取字符类型的输入,会发生什么呢?让我们来看一个示例。
示例4
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类来澄清所有疑问。