2013-03-07 14 views
5

क्या करता है:System.in.read वास्तव में क्या करता है?

System.in.read() 

वापसी? documentation का कहना है:

रिटर्न: डेटा के अगले बाइट, या -1 धारा के अंत तक पहुँच जाता है।

लेकिन उदाहरण के लिए यदि मैं दर्ज करता हूं: 10 मैं 49 वापस प्राप्त करता हूं। ऐसा क्यों है ?

उत्तर

12

49 char 1 के ASCII मान है। यह पहली बाइट का मूल्य है।

धारा बाइट्स उत्पादन किया है कि जब आप प्रवेश अपने कंसोल पर दर्ज करें या टर्मिनल के बजाय 10,12 या 12 के साथ खत्म हो सकता है, तीन बाइट्स {49,48,10} (अपने Mac पर शामिल की 10, आपके सिस्टम के आधार पर)।

तो एक 10 में प्रवेश करने और प्रवेश से टकराने के बाद सरल टुकड़ा

int b = System.in.read(); 
while (b != -1) { 
    System.out.println(b); 
    b = System.in.read(); 
} 

के उत्पादन, (मेरी मशीन पर) है

49 
48 
10 
+0

यह पूरे '10' क्यों नहीं पढ़ता है? – saplingPro

+0

क्योंकि '10' दो बाइट्स है। एक बाइट चरित्र 1 का प्रतिनिधित्व करता है, उसके बाद एक बाइट वर्ण '0' का प्रतिनिधित्व करता है। –

+0

@saplingPro 'System.in.read() 'केवल एक बाइट पढ़ता है। – Maroun

3

जब आप 10 दर्ज करते हैं, यह एक के रूप में पढ़ा नहीं है पूर्णांक लेकिन एक स्ट्रिंग के रूप में या, यहां अधिक सटीक, बाइट्स की एक सरणी।

49 चरित्र 1 के लिए ASCII कोड है।

4

System.in.read() केवल एक बाइट पढ़ता है।

के लिए यूनिकोड बिंदु मूल्य है।

प्रिंट करने का प्रयास:

System.out.println((char)49);

यह आपको इसे और अधिक समझने में मदद मिलेगी।

संबंधित मुद्दे