2013-08-16 11 views
12

मैं जावा का उपयोग कर प्रोग्रामिंग कर रहा हूं।
मैं लिखने की कोशिश कर रहा हूं जो पहचान सकता है कि उपयोगकर्ता कंसोल आधारित प्रोग्राम में एंटर कुंजी दबाता है या नहीं।स्कैनर का उपयोग कर जावा कुंजी दबाएं

मैं जावा का उपयोग करके यह कैसे कर सकता हूं। मुझे बताया गया है कि यह स्कैनर या buffered इनपुट रीडर का उपयोग करके किया जा सकता है। मुझे समझ में नहीं आता (या कैसे उपयोग करें) buffered इनपुट रीडर।

मैं इस स्कैनर का उपयोग कर करने की कोशिश की लेकिन दबाने के बाद दो बार कार्यक्रम समाप्त हो जाता है दर्ज करें, और यह काम नहीं करता

Scanner readinput = new Scanner(System.in); 

    String enterkey = "Hola"; 
    System.out.print(enterkey); 


    enterkey = readinput.nextLine(); 
    System.out.print(enterkey); 

    if(enterkey == ""){ 

     System.out.println("It works!"); 

धन्यवाद

- संपादन - निम्नलिखित कोड का उपयोग कर काम करता है ==

Scanner readinput = new Scanner(System.in); 

    String enterkey = "Hola"; 
    System.out.print(enterkey); 


    enterkey = readinput.nextLine(); 
    System.out.print(enterkey); 

    if(enterkey.equals("")){ 

     System.out.println("It works!"); 

कैसे के बजाय स्ट्रिंग के लिए equals विधि इस किया जा सकता है, और क्या कर रहे हैं buffered इनपुट पाठक का उपयोग कर ऐसा करने के लिए पेशेवर?

+2

'तुलना करें' स्ट्रिंग' के 'equals' विधि के साथ स्ट्रिंग' मूल्यों,' नहीं के साथ == 'है, जो दो वस्तु संदर्भ तुलना निर्धारित करने के लिए अगर वे एक ही को देखें वस्तु। – rgettman

+0

सबसे पहले, जावा में स्ट्रिंग्स की तुलना कभी == में करें। – Kon

+0

धन्यवाद, 'बराबर विधि का उपयोग कर स्ट्रिंग की तुलना करें' –

उत्तर

20

यह java.util.Scanner का उपयोग कर काम करता है और कई "enter" कीस्ट्रोक्स ले जाएगा:

Scanner scanner = new Scanner(System.in); 
    String readString = scanner.nextLine(); 
    while(readString!=null) { 
     System.out.println(readString); 

     if (readString.isEmpty()) { 
      System.out.println("Read Enter Key."); 
     } 

     if (scanner.hasNextLine()) { 
      readString = scanner.nextLine(); 
     } else { 
      readString = null; 
     } 
    } 

इसे तोड़ने के लिए नीचे:

Scanner scanner = new Scanner(System.in); 
String readString = scanner.nextLine(); 

ये लाइनें एक नया Scanner कि से पढ़ रही है प्रारंभ standard input stream (कीबोर्ड) और इससे एक लाइन पढ़ती है।

while(readString!=null) { 
     System.out.println(readString); 

जबकि स्कैनर अभी भी गैर-शून्य डेटा लौटा रहा है, स्क्रीन पर प्रत्येक पंक्ति मुद्रित करें।

 if (readString.isEmpty()) { 
      System.out.println("Read Enter Key."); 
     } 

"दर्ज" (या लौटने के लिए, या जो कुछ भी) कुंजी इनपुट द्वारा आपूर्ति की जाती है, तो nextLine() विधि एक खाली स्ट्रिंग प्राप्त होगा; यह देखने के लिए कि स्ट्रिंग खाली है या नहीं, हम यह निर्धारित कर सकते हैं कि उस कुंजी को दबाया गया था या नहीं। यहां पाठ दर्ज करें कुंजी मुद्रित है, लेकिन आप जो भी कार्य यहां चाहते हैं वह कर सकते हैं।

 if (scanner.hasNextLine()) { 
      readString = scanner.nextLine(); 
     } else { 
      readString = null; 
     } 

अंत में, सामग्री मुद्रण और/या जब "Enter" कुंजी दबाया जाता है कुछ करने के बाद, हम अगर स्कैनर एक और लाइन है देखने के लिए जाँच; मानक इनपुट स्ट्रीम के लिए, यह विधि तब तक "अवरुद्ध" होगी जब तक कि स्ट्रीम बंद न हो, प्रोग्राम का निष्पादन समाप्त होता है, या आगे इनपुट प्रदान किया जाता है।

0
Scanner scan = new Scanner(System.in); 
     int i = scan.nextInt(); 
     Double d = scan.nextDouble(); 


     String newStr = ""; 
     Scanner charScanner = new Scanner(System.in).useDelimiter("(\\b|\\B)") ; 
     while(charScanner.hasNext()) { 
      String c = charScanner.next(); 

      if (c.equalsIgnoreCase("\r")) { 
       break; 
      } 
      else { 
       newStr += c;  
      } 
     } 

     System.out.println("String: " + newStr); 
     System.out.println("Int: " + i); 
     System.out.println("Double: " + d); 

इस कोड काम करता है ठीक

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