Расширение класса OutputStream; написать (int) метод - PullRequest
2 голосов
/ 23 февраля 2012

Итак, моя цель - реализовать метод write в классе OutputStream для создания нового класса NumStream, который в основном преобразует целые числа в Strings. Вот мой пример кода:

import java.io.*; 
public class NumStream extends OutputStream {
    public void write(int c) throws IOException {
        // What goes here?
    }

    public static void main(String[] args) {
        NumStream ns = new NumStream();
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(ns));
        pw.println("123456789 and ! and # ");
        pw.flush(); // needed for anything to happen, try taking it out
    }
}

Я пробовал использовать несколько разных подходов, и мой результат всегда приводит к компиляции программы, но когда я ее запускаю, ничего не происходит. До сих пор я пытался использовать операторы switch для получения этого результата:

public void write(int c) throws IOException {
StringBuffer sb = new StringBuffer();
    switch (c) {
        case 1: sb.append("1");
        break;
    //etc. through 9

Я не уверен, что делать или пытаться делать дальше. : / Какие-нибудь советы, чтобы направить меня в правильном направлении?

1 Ответ

1 голос
/ 26 июня 2013

У меня тоже была такая же проблема, вот решение:

public class MyOutputStream extends OutputStream {

 StringBuilder anotatedText;

 public MyOutputStream() {
  // Custom constructor
 }

 @Override
 public void write(int b) {
     int[] bytes = {b};
     write(bytes, 0, bytes.length);
 }

 public void write(int[] bytes, int offset, int length) {
     String s = new String(bytes, offset, length);
     anotatedText.append(s);
 }

 public void myPrint() {
     System.out.println(anotatedText);
 }
}

Все, что нам нужно сделать, это правильно реализовать метод «write», который четко указан в приведенном выше примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...