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类,以消除所有疑问。