2014-11-03 55 views
1

我正在使用以下代碼將0和1的字符串轉換爲二進制並將其寫入文件。使用位移運算符的錯誤

Code.java:56: error: not a statement 
      nextByte << 1; 

代碼:

public void writeToFile(String binaryString, OutputStream os){ 
    int pos = 0; 
    while(pos < binaryString.length()){ 
     byte nextByte = 0x00; 
     for(int i=0;i<8 && pos+i < binaryString.length(); i++){ 
      nextByte << 1; 
      nextByte += binaryString.charAt(pos+i)=='0'?0x0:0x1; 
     } 
     os.write(nextByte); 
     pos+=8; 
    } 
} 
+0

如果您查找該操作符的一個(任何)使用示例,則會看到該問題。 – keyser 2014-11-03 06:59:48

+0

我試着在網上尋找,我可以找到關於錯誤信息的任何信息,我發現許多事情都是解釋操作員是如何工作的,有些搜索包含類似的陳述,但我無法弄清楚。我想我只是愚蠢的,謝謝。 – Ruturaj 2014-11-03 07:08:02

回答

4

你應該操作的結果賦值給一個變量:

nextByte = nextByte << 1; 
+0

或簡稱:'nextByte << = 1;' – TwoThe 2014-11-03 06:58:19

1

位篩選

我在4號線得到錯誤運算符就像任何二元運算符 - 它們會得到兩個參數並返回結果。換句話說,nextByte << 1;不再是一個聲明比pos + 8。如果你想把它當作一份聲明中,你應該做的事情有返回值,例如,分配給它,這是我假設你的意思做:

nextByte = nextByte << 1; 

或者更好的是,在速記:

nextByte <<= 1; 
+0

+1:最有可能的OP是尋找空手。 – Jayan 2014-11-03 08:00:43