Scanner和BufferReader获取键盘及文件输入

本文介绍了Scanner和BufferedReader在获取键盘输入和文件内容时的使用方法。Scanner的nextInt()和nextFloat()不接收回车符,而BufferedReader可以读取包含空格的字符串,并需要异常处理。同时,讲解了如何利用这两者读取文件内容,以及异常处理的基本原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Scanner获取键盘输入

import java.util.Scanner;

public class main{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		while(scanner.hasNext()){
			String str1 = scanner.nextLine();
			String str2 = scanner.nextLine();

			System.out.println(isEqual(str1,str2));
		}
		scanner.close();
	}
}

注意:1、Scanner不能从键盘获取所有字符均为空格的字符串
2、Scanner中的nextInt()、nextFloat()方法不会接收回车符、换行符,如果在其后增加nextLine()方法,回车符和换行符会被接收,主要用于多输入控制。如下:

public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        // nextInt()不会接收回车符、换行符,如果在其后增加nextLine()方法,回车符和换行符会被接收
        String str = scanner.nextLine();
        for(int i = 0; i < n; i++){
            str = scanner.nextLine();
            System.out.println(stringProcess(str));
        }
        scanner.close();
    }

2、BufferReader获取键盘输入

import java.io.BufferReader
import java.io.IOException

public class main{
	public static void main(String[] args){
		BufferReader br = new BufferReader(new InputStreamReader(System.in));
		String str1;
		String str2;
		try{
				while((str1 = br.readlLine()) != null && (str2 = br.readLine()) != null){
					System.out.println(isEqual(str1,str2));
				}
		}catch(IOException e){
			System.out.println(e.getMessage());
		}
	}
}

注意:BufferReader需要写异常处理,且可以读取所有字符均为空格的字符串

3、Scanner获取文件内容

// 将文件路径传入Scanner
Scanner sc1 = new Scanner(new File("D:\\work\\Program Files\\Java\\a.java"));

while(sc1.haNext()){
    // 输出文件中的一行
	System.out.println(sc1.nextLine());
}

4、BufferReader获取文件内容

public static void main(String[] args){
	BufferReader br1 = null;
	BufferReader br2 = null;
	try{
		br1 = new BufferReader(new FileReader("D:\\work\\Program Files\\Java\\a.java"));
		
		// 使用readLine()读取
		String contentLine = br1.readLine();
		while(contentLine != null){
			System.out.println(contentLine);
			contentLine = br1.readLine();
		}

		br2 = new BufferReader(new FileReader("D:\\work\\Program Files\\Java\\a.java"));

		// 使用read()读取
		int num = 0;
		char ch;
		while((num = br2.read() != -1)){
			ch = (char) num;
			system.out.println(ch);
		}
	}catch(FileNotFoundException e){
		e.printStackTrace();
	}catch(IOException e){
		e.printStackTrace();
	}finally{
		try{
			if(br1 != null){
				br1.close();
			}
			if(br2 != null){
				br2.close();
			}
		}catch(IOException e){
			System.out.println("Error in closing the BufferReader");
		}
	}
}

当try语句中出现异常时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e初始化,即实例化Exception类型的对象。e是此对象异常名称,然后e会自动调用Exception类中指定的方法,也就出现了e.printStackTrace()。该方法的意思是:在命令行中打印出异常信息在程序中出错的位置及原因。

### 回答1: ScannerBufferedReader都是Java中用于读取输入流的类。 Scanner是一个方便的类,可以从各种输入源(如文件、控制台、字符串等)读取数据,并将其转换为Java基本类型或字符串。Scanner类提供了许多方法,如next()、nextInt()、nextLine()等,可以根据需要读取不同类型的数据。 BufferedReader是一个更底层的类,它可以从字符输入流中读取字符,并将其缓冲到内存中。BufferedReader类提供了read()、readLine()等方法,可以读取字符或一行字符。与Scanner不同,BufferedReader不能直接将输入转换为Java基本类型,需要使用其他方法进行转换。 ### 回答2: Scanner是Java的一个类,它提供了一种方便的方式来读取用户输入文件内容。通过Scanner,我们可以从控制台接收用户的输入,并对输入进行有效的处理。Scanner具有一系列的方法,如nextInt()、nextDouble()等,可以读取不同类型的输入数据。它还具有一些方便的方法,如hasNextInt()、hasNextLine()等,用于判断输入流中是否还有下一个输入数据或行。 BufferedReader是Java的一个类,它提供了一种高效的字符流读取方式。相比于直接从底层输入流中读取字符,BufferedReader会对输入流进行缓冲,从而提升读取效率。它还提供了一系列的方法,如readLine()、read()等,用于读取字符或一行字符数据。与Scanner不同的是,BufferedReader只能读取字符数据,并且该类不提供直接读取其他类型数据的方法。 Scanner适合用于获取用户输入,比如读取输入的整数或浮点数,并进行相应的处理。它的优点是简单易用,并且提供了一系列的方便的方法用于输入的验证。但是当需要读取大量的数据时,Scanner的效率会比较低下,因为它是基于正则表达式的处理。 BufferedReader适合用于读取文件内容或其他字符数据,并且能够提升读取的效率。使用BufferedReader时,我们可以一次读取一行数据,提高处理的效率。但是相比于Scanner,BufferedReader相对复杂一些,使用起来需要更多的代码。 总结来说,ScannerBufferedReader都是用于读取输入的类,但是它们的使用场景适用性略有区别。根据具体的需求情况,我们可以选择合适的类来读取输入数据。 ### 回答3: ScannerBufferedReader都是Java中用于读取输入数据的类。 Scanner是一个用于读取基本类型字符串的简单文本扫描器。它提供了方便的方法来解析提取输入数据。Scanner可以从不同类型的输入源(如标准输入文件等)读取数据,并将其转换为所需的类型。它可以处理不同格式的输入数据,如整数、实数、布尔值、字符串等。Scanner还提供了方法来判断输入数据是否符合所需格式,以及在输入数据不符合格式时如何处理错误。 BufferedReader是一个用于高效读取字符文本的缓冲输入流。它读取字符并存储在内部缓冲区中,从而提高了读取性能。BufferedReader可以从不同类型的输入源(如文件、字符流等)读取字符数据,并按行读取数据。它提供了方法来逐行读取文本数据,并提供了一些额外的方法,如跳过行、标记位置重置等。BufferedReader还可以与其他类一起使用,如InputStreamReader来读取字节流并转换为字符流。 ScannerBufferedReader在功能用途上有一些不同。Scanner适用于读取不同类型的输入数据,并提供了更多的数据转换格式验证方法。它适用于需要以不同格式读取输入数据的场景。而BufferedReader适用于高效地读取字符文本,特别是逐行读取文本数据的场景。它适用于处理大量文本数据的情况,例如读取大文件或网络数据。 总的来说,ScannerBufferedReader都是用于读取输入数据的工具,但根据具体的需求场景选择适合的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值