2015-07-11 65 views
0

我有下面的代碼,在一個Java客戶端類(它的這個KnockKnock client/server pair):如何修改此客戶端類以從字符串數組(而非標準輸入)讀取輸入?

try { 
     kkSocket = new Socket("localhost", 4444); 
     out = new PrintWriter(kkSocket.getOutputStream(), true); 
     in = KKJokes[0]; //new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); 
     // in2 = new BufferedReader(new InputStreamReader(kkSocket.getInputStream())); 
    } 

我想擁有它自動從String數組讀取(包含所有這些預定義的笑話),是這樣的:

 String KKJokes[] = {"Who's there?", "Turnip who?", 
      "y", "Who's there?", "Who's there?", "blah" }; 
     /* more cod */ 
     try { 
      kkSocket = new Socket("localhost", 4444); 
      out = new PrintWriter(kkSocket.getOutputStream(), true); 

     for (int i = 0; i< KKJokes.length; i++) { 
      in = new BufferedReader(new InputStreamReader(KKJokes[i])) ; 
     } 
     } 

但是,這並不工作,它給:

KnockKnockClientRedux.java:33: non-static variable KKJokes cannot be referenced from a static context 
     for (int i = 0; i< KKJokes.length; i++) { 
         ^KnockKnockClientRedux.java:34: non-static variable KKJokes cannot be referenced from a static context 
     in = new BufferedReader(new InputStreamReader(KKJokes[i])) ; //new Buf feredReader(new InputStreamReader(kkSocket.getInputStream())); 
                ^KnockKnockClientRedux.java:34: cannot find symbol symbol : constructor InputStreamReader(java.lang.String) location: class java.io.InputStreamReader 
     in = new BufferedReader(new InputStreamReader(KKJokes[i])) ; //new Buf feredReader(new InputStreamReader(kkSocket.getInputStream())); 

編輯:那豈不是更容易剛剛從讀 文本文件?也許我會在文本文件中垂直列出所有的KnockNock笑話行。這樣,FileReader代替kkSocket.getInputStream()代碼似乎更容易

回答

1

編譯器消息告訴它所有。

new InputStreamReader(new ByteArrayInputStream(KKJokes[i].getBytes()) 
+0

這修正了它的一部分,感謝:用

static String KKJokes[] = {"Who's there?", "Turnip who?", "y", "Who's there?", "Who's there?", "blah" }; 

第二個問題可以嘗試用迎刃而解!我仍然有'KnockKnockClientRedux.java:34:找不到符號符號:構造函數InputStreamReader(java.lang.String)location' tho – Coffee

+0

試一下: new InputStreamReader(new ByteArrayInputStream(KKJokes [i] .getBytes()) – gfelisberto