如何在Java中使用Scanner函数从控制台输入数据?
Scanner是Java中Scanner类的一个实例对象,用于实现从控制台输入数据。Scanner函数能够读取用户从键盘输入的各种数据类型(如int类型、double类型、String类型等),并将其转换为Java语言中对应的数据类型,从而方便进行计算和判断。
使用Scanner函数从控制台输入数据的步骤非常简单:
1. 在Java程序的开头,导入Scanner类,在类中定义Scanner类的实例对象;例如:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
}
}
2. 从控制台输入数据。Scanner类的next()方法让程序等待用户输入一串字符串,并将其存储在变量中。而nextInt()方法等待一个整数的输入,并将该整数存储在变量中。类似的,nextDouble()等方法也有相应的作用。例如:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.next(); //等待输入一个字符串,并存储在变量str中
int num = sc.nextInt(); //等待输入一个整数,并存储在变量num中
}
}
3. 接下来,您可以使用存储在变量中的用户输入数据进行任何必要的处理。例如:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Please enter an integer: ");
int num = sc.nextInt();
if(num > 0){
System.out.println("The integer you entered is positive.");
}else{
System.out.println("The integer you entered is non-positive.");
}
}
}
此程序等待用户输入一个整数,如果输入的整数大于0,程序将输出“positive”,否则将输出“non-positive”。
上述是使用Scanner函数从控制台输入数据的基本过程,下面我们来具体讲述如何充分利用Scanner函数。
1. Scanner函数的next()方法及nextLine()方法
在读取由字母或数字组成的字符串时,通常我们会使用next()方法。例如:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("Please enter a string: ");
String word = sc.next();
System.out.println("You entered: " + word);
}
}
运行该程序时,用户输入一个字符串后,程序将输出该字符串。注意,使用next()方法时,Scanner对象会读取用户输入的第一个由字母或数字组成的字符串,并将其存储在word变量中。
相比之下,如果我们需要读取一个由若干个字符组成的字符串,通常应该使用nextLine()方法。例如:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("Please enter a string: ");
String line = sc.nextLine();
System.out.println("You entered: " + line);
}
}
运行该程序时,用户输入一行字符串后,程序将按原样输出该字符串。
2. Scanner函数的nextInt() 方法及nextDouble()方法
Scanner对象的nextInt() 方法和nextDouble()方法可以用于读取整数或小数。例如:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("Please enter an integer: ");
int num = sc.nextInt();
System.out.println("You entered: " + num);
System.out.print("Please enter a decimal number: ");
double d = sc.nextDouble();
System.out.println("You entered: " + d);
}
}
运行该程序时,用户将被提示输入一个整数和一个小数。程序将读取用户输入的整数和小数,并将其存储在num和d两个变量中,最后打印出来。
注意,若用户输入错误的数据类型,例如输入的不是整数而要求读取整数时,则程序会抛出InputMismatchException异常。这种情况下,我们应该在程序中预设处理方法,如输出错误提示或给出重新输入的机会。
3. Scanner函数的hasNext()方法及nextXXX()方法
Scanner对象的hasNext() 方法通常用于向用户请求输入值的数量,然后在循环中使用nextXXX() 方法处理这些值。例如:
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("How many numbers do you want to add? ");
int count = sc.nextInt();
int sum = 0;
for(int i=0; i<count; i++){
System.out.print("Enter a number: ");
int num = sc.nextInt();
sum += num;
}
System.out.println("The sum of the numbers you entered is: " + sum);
}
}
该程序会询问用户要输入几个整数,然后读取这些整数并计算它们的总和。此程序使用循环处理所有整数的输入。在每个循环中,程序使用nextXXX() 方法读取一个整数,并将其添加到总和中。
4. Scanner函数的useDelimiter()方法
Scanner对象的useDelimiter() 方法用于指定Scanner应该使用的分隔符。使用该方法可以使Scanner忽略输入字符串中的空格、制表符和换行符等字符。按照默认设置(空格字符),Scanner将读取用户在回车键之前的所有字符。
默认情况下,输入数据值是以“西文输入方法”输入,也就是按下了回车(Enter键),一个新行的标志表示输入数据结束。Scanner会去掉回车后面的空格。如果在您输入时不按Enter,而是一只输入,那么Scanner就会将所有输入项视为同一项,而不是不同的输入项。
import java.util.Scanner;
public class Example{
public static void main(String[] args){
Scanner sc = new Scanner(System.in).useDelimiter("\\s+");
System.out.print("Please enter a line of text: ");
String line = sc.nextLine();
System.out.println("You entered: " + line);
}
}
运行该程序时,用户将被要求输入一行文本。程序将读取用户输入的整行文字,并将其存储在line变量中。如果用户在文本字符串中输入了一些空格或换行符等,这些字符将被视为正常的文本,并被存储在line变量中。
使用Scanner函数,从控制台输入数据是Java编程中一个非常常见的功能。掌握了如何使用Scanner从控制台输入数据的基本方法后,我们还应该了解如何处理错误的输入、如何有效地读取用户输入等方面的内容,以便编写更加清晰、高效的Java代码。
