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()。该方法的意思是:在命令行中打印出异常信息在程序中出错的位置及原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值