Jdk5中引入java.util.Scanner ,我们可以通过 Scanner 类来获取用户的输入。
基本概念:
Scanner类是Java标准库提供的一个用于读取输入的类。它可以通过不同的方法从标准输入、文件和字符串等来源读取数据。
要使用Scanner类,需要先导入java.util包。然后,可以创建一个Scanner对象,并将输入源传递给它进行读取。
下面是创建 Scanner 对象的基本语法:
j
Scanner s = new Scanner(System.in);
我们主要学习的就是Scanner类的next()方法和nextLine()方法,
这俩中方法都是用来获取输入的字符串的,那么有什么限制呢?
让我们一起来看看吧
一般在接受数据进行操作的时候呢,我们都会进行判断是否还有输入的数据,这里的话要使用hasNext作为判断是否还有输入?那么具体例子如下:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if (scan.hasNext()) {
String str1 = scan.next();
System.out.println("输入的数据为:" + str1);
}
scan.close();
}
执行以上程序输出结果为:
next方式接收:
Stevedash
输入的数据为:Stevedash
j
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// nextLine方式接收字符串
System.out.println("nextLine方式接收:");
// 判断是否还有输入
if (scan.hasNextLine()) {
String str2 = scan.nextLine();
System.out.println("输入的数据为:" + str2);
}
scan.close();
}
}
执行以上程序输出结果为:
nextLine方式接收:
Stevedash
输入的数据为:Stevedash
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:
从标准输入(键盘)读取整数:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象,传入System.in作为输入源
System.out.print("请输入一个整数: ");
int num = scanner.nextInt(); // 使用nextInt()方法读取下一个整数
System.out.println("你输入的整数是: " + num);
}
}
从标准输入(键盘)读取字符串:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); // 创建Scanner对象,传入System.in作为输入源
System.out.print("请输入一个字符串: ");
String str = scanner.nextLine(); // 使用nextLine()方法读取一行输入
System.out.println("你输入的字符串是: " + str);
}
}
从文件读取数据:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
try {
File file = new File("data.txt"); // 创建File对象表示文件路径
Scanner scanner = new Scanner(file); // 创建Scanner对象,传入文件作为输入源
while (scanner.hasNextLine()) { // 使用hasNextLine()方法检查是否还有下一行
String line = scanner.nextLine(); // 使用nextLine()方法读取一行数据
System.out.println(line);
}
scanner.close(); // 关闭Scanner对象
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
从上面的例子我们可以得知:
Scanner类在Java中是一个非常实用的输入工具类,具有以下优势和应用场景:
优势:
方便易用:Scanner类提供了简单而直观的方法来读取基本类型和字符串等数据。
多样的输入源:Scanner可以从标准输入、文件和字符串等多种输入源中读取数据。
灵活的数据解析:Scanner类支持将输入数据按照指定的格式解析为不同的数据类型,如整数、浮点数等。
提供了方便的检查方法:Scanner类提供了多个hasNextXxx()方法,用于方便地检查是否还有下一个可读元素。
缺点:
性能较低:相比于其他高性能的输入流读取方法,如BufferedReader,Scanner的性能较低。这主要是因为Scanner会尝试根据特定格式解析数据,导致额外的开销。
异常处理复杂:在使用Scanner类时,需要考虑异常处理,如输入数据与期望的格式不匹配时可能抛出InputMismatchException异常。
应用场景:
用户交互输入:Scanner类适用于从用户输入中读取数据,例如命令行交互、控制台输入等。
读取文件内容:当需要从文本文件中读取数据时,Scanner类提供了方便的方法来逐行读取文件内容。
解析格式化数据:Scanner类可以根据指定的分隔符或正则表达式,将字符串按照特定的格式解析为不同的数据类型。
结尾语:记录于2023年7月31号21时00分,以上仅为个人在[菜鸟教程—JavaScanner类](Java Scanner 类 | 菜鸟教程 (runoob.com))的学习过程中遇到的问题,还有记录的个人想法,有错误欢迎指出,希望对您有帮助,感谢观看!