为什么我无法打印输入的整个字符?

Why am i not able to print the whole character as i have entered it?

作为一名业余 java 学习者,我正在尝试 java 文件和 I/O 方法的不同组合,因为我尝试了这段代码,我想打印我输入的任何内容通过我的代码 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 scanner = new Scanner(System.in);

2) 将 System.in.read 替换为:

scanner.next()