读取键盘录入&使用readLine方法来完成键盘录入

这篇博客探讨了如何在Java中通过键盘输入数据。文章指出,`System.in`代表标准输入设备即键盘,而`System.out`代表标准输出设备。示例代码展示了如何使用`StringBuilder`和`InputStream`配合读取键盘输入的一行数据,当输入`over`时停止。此外,博主还提出了一个问题:是否可以直接使用`BufferedReader`的`readLine`方法来读取键盘输入,并解释了由于`readLine`属于字符流,而键盘输入的`read`方法是字节流,因此需要将字节流转为字符流。示例代码演示了如何实现这一转换。

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

/*
读取键盘录入。
System.out:对应的是标准输出设备,控制台。
System.in:对应的标准输入设备:键盘。

需求:
通过键盘录入数据。
当录入一行数据后,就将该行数据进行打印。
如果录入的数据是over,那么停止录入。

/
import java.io.
;
class ReadIn
{
public static void main(String[] args) throws IOException
{
InputStream in = System.in;
StringBuilder sb = new StringBuilder();

	while(true)
	{
		int ch = in.read();
		if(ch=='\r')
			continue;
		if(ch=='\n')
		{
			String s = sb.toString();
			if("over".equals(s))
				break;
			System.out.println(s.toUpperCase());
			sb.delete(0,sb.length());
		}
		else
			sb.append((char)ch);

	}
}

}

2
/*
字符流:
FileReader
FileWriter。

BufferedReader
BufferedWriter

字节流:
FileInputStream
FileOutputStream

BufferedInputStream
BufferedOutputStream

通过刚才的键盘录入一行数据并打印其大写,发现其实就是读一行数据的原理。
也就是readLine方法。

能不能直接使用readLine方法来完成键盘录入的一行数据的读取呢?

readLine方法是字符流BufferedReader类中的方法。

而键盘录入的read方法是字节流InputStream的方法。

那么能不能将字节流转成字符流在使用字符流缓冲去的readLine方法呢?

/
import java.io.
;

class TransStreamDemo
{
public static void main(String[] args) throws IOException
{
//获取键盘录入对象。
//InputStream in = System.in;

	//将字节流对象转成字符流对象,使用转换流。InputStreamReader
	//InputStreamReader isr = new InputStreamReader(in);

	//为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader

	//BufferedReader bufr = new BufferedReader(isr);


	//键盘的最常见写法。
	BufferedReader bufr = 
			new BufferedReader(new InputStreamReader(System.in));

// OutputStream out = System.out;
// OutputStreamWriter osw = new OutputStreamWriter(out);
// BufferedWriter bufw = new BufferedWriter(osw);
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));

	String line = null;

	while((line=bufr.readLine())!=null)
	{
		if("over".equals(line))
			break;
		bufw.write(line.toUpperCase());
		bufw.newLine();
		bufw.flush();
	}

	bufr.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值