Java 为什么我不能在输入字符时打印整个字符?
作为一名业余java学习者,我尝试了java文件和i/O方法的不同组合,当我尝试这段代码时,我想通过我的代码打印我在文件Java 为什么我不能在输入字符时打印整个字符?,java,file-io,fileinputstream,filewriter,bufferedinputstream,Java,File Io,Fileinputstream,Filewriter,Bufferedinputstream,作为一名业余java学习者,我尝试了java文件和i/O方法的不同组合,当我尝试这段代码时,我想通过我的代码打印我在文件tom.txt中输入的任何内容(我知道我想要什么可以通过使用其他方法轻松完成),我的代码如下: import java.io.*; public class Dhoom3 { public static void main(String[] args) throws IOException, NullPointerException { FileWriter b =
tom.txt
中输入的任何内容(我知道我想要什么可以通过使用其他方法轻松完成),我的代码如下:
import java.io.*;
public class Dhoom3
{
public static void main(String[] args) throws IOException, NullPointerException
{
FileWriter b = new FileWriter(new File("tom.txt"));
System.out.println(" enter whatever : ");
b.write(System.in.read());
b.flush();
System.out.println("the printed characters are");
FileInputStream r = new FileInputStream("tom.txt");
BufferedInputStream k = new BufferedInputStream(r);
int g;
while((g = k.read())!= -1)
{
System.out.println((char)g);
}
}
}
我的输出是:
enter whatever :
stack
the printed characters are
s
我在哪里犯了错误,或者我应该在哪里修改我的程序?基本上,为什么我的代码只打印第一个字符?您的错误正在使用
System.in.read()
读取输入
System.in.read仅读取输入的一个字节
更好的替代方法是使用扫描仪。扫描仪可以扫描多个字节的信息,因此它们更适合您的工作
要修复代码,请执行以下操作:
1) 创建一个新的扫描仪对象,如下所示:
Scanner scanner = new Scanner(System.in);
2) 将System.in.read替换为:
scanner.next()
您只从系统输入中读取了一个字符,这就是写入文件的字符(为了方便起见,您可能需要使用
扫描仪
。@Mena我应该如何修改它?你能建议一种方法吗?@Mena so read()方法一次只读取一个字符?如果我仍然想对系统输入使用read()方法,比如如果我使用for或while循环,可以修改它吗?