2011-11-23 14 views
11

मुझे चल रहा है (प्रतीत होता है सरल) कोड में कुछ अजीब आउटपुट मिल रहा है। यहाँ मैं क्या है:जावा प्रिंटिंग स्ट्रिंग वेरिएबल

import java.util.Scanner; 

public class TestApplication { 
    public static void main(String[] args) { 
    System.out.println("Enter a password: "); 
    Scanner input = new Scanner(System.in); 
    input.next(); 
    String s = input.toString(); 
    System.out.println(s); 
    } 
} 

और उत्पादन मैं सफलतापूर्वक संकलन के बाद मिलता है:

Enter a password: 
hello 
java.util.Scanner[delimiters=\p{javaWhitespace}+][position=5][match valid=true][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Q∞\E] 

कौन सा तरह अजीब है। क्या हो रहा है और मैं s के मान को कैसे प्रिंट करूं?

उत्तर

20

आपको स्कैनर ऑब्जेक्ट द्वारा वापस toString() मान प्राप्त हो रहा है जो आप नहीं चाहते हैं और आप स्कैनर ऑब्जेक्ट का उपयोग कैसे करते हैं। इसके बजाय आप डेटा स्कैनर ऑब्जेक्ट द्वारा प्राप्त डेटा चाहते हैं। उदाहरण के लिए,

Scanner input = new Scanner(System.in); 
String data = input.nextLine(); 
System.out.println(data); 

कृपया इसका उपयोग करने के तरीके पर ट्यूटोरियल पढ़ें क्योंकि यह सब समझाएगा।

संपादित
कृपया यहाँ देखो: Scanner tutorial

इसके अलावा Scanner API पर एक नज़र जो स्कैनर के तरीकों और संपत्तियों की बारीकियों के कुछ समझा जाएगा है।

String s = input.next(); 

को

2
input.next(); 
String s = input.toString(); 

परिवर्तन हो सकता है कि आप क्या करने की कोशिश कर रहे थे।

Scanner input = new Scanner(System.in); 
String s = input.next(); 
System.out.println(s); 
2

यह और अधिक आप क्या चाहते हैं आप प्राप्त होने की संभावना है। इसके बजाय यदि स्ट्रिंग आप स्कैनर ऑब्जेक्ट प्रिंट करते हैं। इस

Scanner input = new Scanner(System.in); 
String s = input.next(); 
System.out.println(s); 
2

तुम गलत मूल्य प्रिंट कर रहे हैं:

2

तुम भी BufferedReader इस्तेमाल कर सकते हैं का प्रयास करें:

import java.io.*; 

public class TestApplication { 
    public static void main (String[] args) { 
     System.out.print("Enter a password: "); 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String password = null; 
     try { 
     password = br.readLine(); 
     } catch (IOException e) { 
     System.out.println("IO error trying to read your password!"); 
     System.exit(1); 
     } 
     System.out.println("Successfully read your password."); 
    } 
} 
+2

क्यों स्कैनर के बजाय एक BufferedReader का उपयोग करें? स्कैनर ऑब्जेक्ट का उपयोग करने में क्या गलत है? –

+0

@ होवरक्राफ्टफुलऑफेल वास्तव में। मैंने यह जवाब देने के लिए अपना जवाब दोहराया कि यह सिर्फ एक और विकल्प है। –

+0

सहमत हैं। अप-वोट 1+ –

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