【问题标题】:System.out in DataOutputStream is not printing on the consoleDataOutputStream 中的 System.out 未在控制台上打印
【发布时间】:2014-05-09 17:35:57
【问题描述】:

我正在使用 DataOutputStream 尝试以下代码。传递给 DataOutputStream 的 OutputStream 没有打印任何内容。请看我下面的代码,请告诉我这段代码有什么问题。

public class DataStreamsExample {
public static void main(String[] args) throws IOException {
    DataInputStream dis = new DataInputStream(System.in);
    System.out.println("Enter the First Number");
    int i = dis.readInt();
    System.out.println("Enter the Second Numebr");
    int j= dis.readInt();
    int total = i+j;
    DataOutputStream dos = new DataOutputStream(System.out);
    dos.writeInt(total);

}

}

【问题讨论】:

  • DataInput 顾名思义是用于二进制数据而不是文本。这意味着除非您真的知道自己在做什么,否则您将无法输入二进制数。我建议您改用 Scanner 和 PrintWriter 等文本。

标签: java java-io datainputstream


【解决方案1】:

OutputStream 本质上是一个二进制结构。如果您想写入文本数据(例如从控制台),您应该使用某种描述的 Writer。要将 OutputStream 转换为 Writer,请使用 OutputStreamWriter。然后在 Writer 周围创建一个 PrintWriter,您可以使用 PrintWriter.println() 读取一行。 您可以替换跟随线

DataOutputStream out = new DataOutputStream(out);

进入这个

PrintWriter out = new PrintWriter(new OutputStreamWriter(out));

然后可以在 OutputStreamWriter 的构造函数中显式指定字符编码。

【讨论】:

    【解决方案2】:

    为什么要使用数据输出流?你不能使用Scanner 来读取输入吗?

    调用dos.flush() 会打印出你的结果。

    【讨论】:

    • 我知道使用扫描仪。我的问题是为什么 System.out 不起作用。
    • 谢谢它的工作.. 但不是 int 打印。我猜是打印字节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多