java 輸出輸入問題?

最近課程學到read write是完全不懂

題目是這樣

我實在不清楚 可以請高人指點迷津嗎?

有一整數陣列如下:

int[] a = {72,101,108,108,111,40,69,114,114,111,114,41,74,97,118,97};

此陣列代表一字串格式XX…XX(YY…YY)ZZ…ZZ

請使用write(int b)方法,(僅能使用一次迴圈)將陣列a中的XX…XX和ZZ…ZZ從標準輸出各顯示一列、YY…YY從標準錯誤輸出顯示一列。請在命令提示字元視窗內執行,並將標準輸出轉向檔案aaa;同時將標準錯誤輸出轉向檔案bbb。請操作文字命令分別顯示檔案aaa及檔案bbb的內容。

註:條件判斷中必須直接使用字元做為判斷的依據。

有一byte陣列跟上題一樣:

byte[] b = {72,101,108,108,111,40,69,114,114,111,114,41,74,97,118,97};

請先利用程式分別找出陣列b中 ( 和 ) 的位置,

再使用write(byte[] buf, int off, int len)方法完成跟上題一樣的輸出。

註:條件判斷中必須直接使用字元做為判斷的依據。

1 個解答

評分
  • 阿平
    Lv 4
    4 年前
    最佳解答

    陣列裡是Hello(Error)Java的ASCII編碼,用不同的資料流(stream)輸出括號內外的內容,括號外的內容用"標準輸出(stdout)"輸出,括號內的內容用"標準錯誤(stderr)"輸出。執行時將不同的資料流重導向到不同檔案,"標準輸出"重導向到aaa,"標準錯誤"重導向到bbb。

    import java.io.*;

    public class Test {

    public static void main(String[] args) {

    int[] a = { 72, 101, 108, 108, 111, 40, 69, 114, 114, 111, 114, 41, 74, 97, 118, 97 };

    boolean flag = true;

    FileOutputStream fout = new FileOutputStream(FileDescriptor.out);

    FileOutputStream ferr = new FileOutputStream(FileDescriptor.err);

    try {

    for (int i : a) {

    if (i == '(') {

    fout.write('\n');

    flag = false;

    continue;

    }

    if (i == ')') {

    ferr.write('\n');

    flag = true;

    continue;

    }

    if (flag) {

    fout.write(i);

    } else {

    ferr.write(i);

    }

    }

    fout.write('\n');

    fout.close();

    ferr.close();

    } catch (IOException e) {

    System.err.println(e.getMessage());

    }

    }

    }

    命令提示字元中輸入:

    java Test > aaa 2> bbb

    more aaa

    more bbb

還有問題?馬上發問,尋求解答。