2012-08-14 155 views
0

我是Java編程語言的新手,事實上我只有一些基本的編程概念。我遇到了下面這段Java代碼,我無法理解那裏的一個函數。如果有人向我解釋'outData.writeInt()'做了什麼以及如何使用它,我將不勝感激。謝謝。什麼是outData.writeInt()在Java中做什麼?

try { 
    if(moe.getSource() == forward)outData.writeInt(1); 
    if(moe.getSource() == reverse)outData.writeInt(2); 
    if(moe.getSource() == leftTurn)outData.writeInt(3); 
    if(moe.getSource() == rightTurn)outData.writeInt(4); 
    if(moe.getSource() == speedUp)outData.writeInt(6); 
    if(moe.getSource() == slowDown)outData.writeInt(7); 

    outData.flush(); 
    } 
catch (IOException ioe) { 
    System.out.println("\nIO Exception writeInt"); 
} 
+0

什麼類outData是一個實例? – 2012-08-14 12:59:59

回答

2

快速谷歌讓我對DataOutputStream.writeInt()

商務部將int寫入基礎輸出流爲四個字節,高字節 第一。如果沒有拋出異常,寫的計數器由4

DataOutputStream將被寫入文件,或者一個網絡連接遞增 。

+1

雖然我同意,但這聽起來更像是一條評論。 ;) – 2012-08-14 13:00:45

+0

@ brian-agnew感謝您的快速回復。實際上面的代碼是用Java編寫的程序的一部分,程序可以與NXT Lego進行通信,並允許通過點擊前進/後退/左/右按鈕來控制它的移動。在這裏,我真正想知道的是它是如何工作的,並且有沒有其他選擇? – 2012-08-14 13:18:15

2

writeInt()在DataOutputStream類

是記錄

將int寫入基礎輸出流作爲四個字節,高字節。如果沒有拋出異常,則寫入的計數器增加4.

簡而言之,它會在big-endian中寫入一個32位的int值。


如果你想知道一個方法做什麼,它很好的開始與源

/** 
* Writes an <code>int</code> to the underlying output stream as four 
* bytes, high byte first. If no exception is thrown, the counter 
* <code>written</code> is incremented by <code>4</code>. 
* 
* @param  v an <code>int</code> to be written. 
* @exception IOException if an I/O error occurs. 
* @see  java.io.FilterOutputStream#out 
*/ 
public final void writeInt(int v) throws IOException { 
    out.write((v >>> 24) & 0xFF); 
    out.write((v >>> 16) & 0xFF); 
    out.write((v >>> 8) & 0xFF); 
    out.write((v >>> 0) & 0xFF); 
    incCount(4); 
} 
+0

有沒有其他方法比這個更好?我們可以用其他函數替換outData.writeint。 – 2012-08-14 13:51:18

+0

是的,如果您願意,可以將每個字節寫入一次或將兩個16位值寫入。 – 2012-08-14 13:52:09

+0

好的...但我想知道它究竟做了什麼?我想知道傳遞整數後會發生什麼... – 2012-08-14 14:01:02