2011-04-10 10 views
23

को हटा दिया है, मैं जावा 6 पर हूं। उपयोगकर्ता इनपुट पढ़ने के लिए DataInputStream in = new DataInputStream(System.in); का उपयोग करना। जब readLine() को बहिष्कृत किया जाता है। उपयोगकर्ता मूल्य पढ़ने के लिए आसपास क्या काम है?DataInputStream ने रीडलाइन() विधि

DataInputStream in = new DataInputStream(System.in); 
int num; 
try 
{ 
    num = Integer.parseInt(in.readLine()); //this works 

    num = Integer.parseInt(in); //just in doesnt work. 
} 
catch(Exception e) 
{ 
} 

कृपया बताएं कि जब readLine() को बहिष्कृत किया जाना चाहिए।

+0

कृपया अगली बार एक संकलित परीक्षण केस (या लागू त्रुटि के साथ एक असफल परीक्षण केस) शामिल करें। –

+0

टेस्ट केस? हम बहिष्कार की बात कर रहे हैं। आप उपरोक्त कोड को एक संपादक में डालते हैं और यह रेखा पीले रंग को बदल देता है और कहता है "रीडलाइन को बहिष्कृत किया गया है"। जावा विधि को बहिष्कृत करने के लिए किसी को भी टेस्ट केस की आवश्यकता नहीं है। यहां लागू चेतावनी दी गई है: https://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html#readLine() –

उत्तर

29

InputStream मूल रूप से एक बाइनरी निर्माण है। यदि आप टेक्स्ट डेटा (जैसे कंसोल से) पढ़ना चाहते हैं तो आपको कुछ विवरणों के Reader का उपयोग करना चाहिए। InputStream को Reader में बदलने के लिए, InputStreamReader का उपयोग करें। फिर Reader के आस-पास BufferedReader बनाएं, और आप BufferedReader.readLine() का उपयोग कर एक लाइन पढ़ सकते हैं।

अधिक विकल्प:

  • का प्रयोग करें एक Scanner बनाया System.in दौर, और कॉल Scanner.nextLine
  • उपयोग एक Console (System.console() से प्राप्त) और Console.readLine
23

डेप्रिकेशन फोन और विकल्प आमतौर पर पहले से ही है स्पष्ट रूप से javadocs में समझाया गया। तो जवाब देखने के लिए यह पहली जगह होगी। DataInputStream के लिए आप इसे here पर पा सकते हैं। readLine() विधि here है। यहां प्रासंगिकता का एक निकास है:

बहिष्कृत। यह विधि बाइट्स को वर्णों में सही रूप से परिवर्तित नहीं करती है। जेडीके 1.1 के अनुसार, पाठ की रेखाओं को पढ़ने का पसंदीदा तरीका BufferedReader.readLine() विधि के माध्यम से है।

DataInputStream d = new DataInputStream(in); 

साथ:

BufferedReader d 
     = new BufferedReader(new InputStreamReader(in)); 

वर्ण एन्कोडिंग तो स्पष्ट रूप से निर्दिष्ट किया जा सकता कार्यक्रम कि DataInputStream क्लास का उपयोग लाइनों को पढ़ने के लिए परिवर्तित किया जा सकता फार्म के कोड की जगह BufferedReader वर्ग का उपयोग करने के InputStreamReader के निर्माता में।

Scanner जो कि जावा 1.5 के बाद पेश किया गया था, भी एक अच्छा (और आधुनिक) विकल्प है।

1

नीचे काम नहीं करता,

num = Integer.parseInt(in); 

इसके बजाय आप का उपयोग करना चाहिए:

num = Integer.parseInt(in.readLine()); 

readLine() लाइन ब्रेक तक लाइन का एक इनपुट पढ़ा जाएगा।

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