为什么我输入它时无法打印整个角色?

时间:2016-06-21 15:28:40

标签: java file-io fileinputstream filewriter bufferedinputstream

作为业余java学习者,我尝试了不同的java文件和I / O方法组合,因为我尝试了这段代码,我想通过我的代码打印我输入文件tom.txt的任何内容(i通过使用其他方法可以轻松地理解我想要的东西),我的代码是:

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

我犯了哪些错误,或者我应该在哪里修改我的程序?,基本上为什么我的代码只打印第一个字符?

1 个答案:

答案 0 :(得分:1)

您的错误正在使用

System.in.read()

阅读输入。

System.in.read只读取一个输入字节。

更好的替代方法是使用扫描仪。扫描仪可以扫描多个字节的信息,因此它们更适合您正在做的事情。

修复您的代码:

1)创建一个新的Scanner对象,如下所示:

Scanner scanner = new Scanner(System.in);

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

scanner.next()