在運行的時候傳遞參數

有人發帖問下面的程序爲什麼運行會出錯?

The method cypher(InputStream, OutputStream) in the type 
MyEncoderText is not applicable for the arguments (FileInputStream, 
FileOutputStream)
package package1;

import java.io.*;

public class MyEncoderText {
    public static void main(String[] args) throws Exception {
        String path0 = args[0];
        String path1 = args[1];
        FileInputStream in = new FileInputStream(path0);
        FileOutputStream out = new FileOutputStream(path1);
        cypher(in, out); 
        System.out.println("結束");
        out.close();
    }

    private static void cypher(InputStream inp, OutputStream oup)
            throws Exception {
        int len = -1;
        System.out.println("0:  " + len);
        while ((len = inp.read()) != -1) {
            System.out.println("1: " + len);
            oup.write(len);// ^ 102 ^ 91
            System.out.println("2: " + len);
        }
        System.out.println("3: " + oup);
    }
}

然後,我試了一下,好像沒有問題啊?

有人建議他把cypher方法的參數改爲(FileInputStream inp, FileOutputStream oup),

就這樣結束了這個提問。無聊。


還有那個oup.write(len^ 102 ^ 91);

我開始以爲是類似二進制移位這樣提高效率之類的操作,

結果根本不行!把它註釋掉才能真正地執行復制文件的操作,浪費我時間。


不過這個程序倒是提醒了我關於“在運行的時候傳遞參數”的問題,

寫了一個小程序:

public class TestArgs {

    public static void main(String[] args) {
        String Arg1 = args[0];
        String Arg2 = args[1];
        String Arg3 = args[2];
        
        System.out.println(Arg1);
        System.out.println(Arg2);
        System.out.println(Arg3);
    }
}


在cmd小黑窗或者Eclipse中,只要以空格隔開傳遞的參數,

就可以將參數傳遞給程序。

例如:java TestArgs A B C 這樣。

Eclipse就是Run configurations……窗口傳,不截圖了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章