2012-03-13 14 views
6

मेरा प्रश्न त्वरित है कि मैं इनपुट पढ़ने और फिर उपयुक्त कोड को कॉल करने के लिए एक छोटे कंसोल पर काम कर रहा हूं। मैं एसबीटी का उपयोग कर रहा हूं और मुझे एक समस्या का सामना करना पड़ा है, जहां मैं एसबीटी रन के साथ, एसबीटी कंसोल के अंदर, या यहां तक ​​कि सादे पुराने स्केल दुभाषिया में भी अपना प्रोग्राम चलाने के बाद इनपुट पढ़ने की कोशिश करता हूं।एसबीटी रन या एसबीटी कंसोल का उपयोग करके BufferedReader.readLine के साथ समस्या

प्रतीत होता है कि प्रतीत होता है, लेकिन अगर मैं वापसी करता हूं तो यह वास्तव में इनपुट को पढ़ता है। हालांकि खोल का बफर खाली रहता है। यहां सामान्य कोड है जो मैं कोशिश कर रहा हूं जो मुझे मुद्दा दे रहा है।

import java.io._ 

val s = new BufferedReader(new InputStreamReader(System.in)) 

val line = s.readLine 

println(line) 

क्या किसी को पता है कि यह क्यों है, और यदि ऐसा है तो इसे ठीक करने का कोई तरीका है? जब मैं एसबीटी से अपना प्रोग्राम चलाता हूं तो मैं यह देखने में सक्षम होना चाहूंगा कि मैं क्या टाइप करता हूं। खोल में अपना टाइपिंग देखे बिना यह मेरी परियोजना का परीक्षण और विकास बहुत कम सुखद बनाता है।

उत्तर

-1

यह वास्तव में जावा एपीआई प्रश्न है, हालांकि स्कैला में। BufferedReader.readLine() आपके द्वारा System.in से टाइप किए गए सभी वर्णों का उपभोग करेगा, जब तक कि यह पूरी लाइन न हो, उस समय यह आपके द्वारा लाइन के अनुसार वापस लौटाएगा।

जावा में मूल java.io कक्षाओं के साथ कंसोल इनपुट मुश्किल था। जावा 6 से पहले, मैंने इसके लिए कुछ गन्दा समाधान देखे हैं, लेकिन सौभाग्य से उस रिलीज के साथ एक नई कक्षा शुरू की गई ताकि इसे अधिक आसान बना दिया जा सके: java.io.Console। मुझे लगता है कि यह

val line = System.console.readLine 

println(line) 
+1

जब मैं एसबीटी के भीतर से अपना कोड चलाने का प्रयास करता हूं तो मुझे एक शून्य सूचक अपवाद मिलता है। विशेष रूप से, 'कंसोल' शून्य है। – dsg

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