2010-06-22 6 views
67

मैं एक छोटा जावा एप्लिकेशन बना रहा हूं जिसमें प्रतिशत के साथ प्रगति सूचक होना चाहिए। प्रत्येक लूप में यह अगले प्रतिशत को प्रदर्शित करने से पहले प्रदर्शित प्रगति को हटाने के लिए बैकस्पेस \b का उपयोग करता है।एक्लिप्स के कंसोल में काम करने के लिए बैकस्पेस b कैसे प्राप्त करें?

public static void main(String[] args) throws Exception { 
    System.out.print("Progress: "); 
    for (int percentage = 0; percentage < 100; percentage++) { 
     System.out.print(percentage + "%"); 
     Thread.sleep(10); // Stub for "long running task". 
     int length = String.valueOf(percentage).length() + 1; 
     while (length-- > 0) { 
      System.out.print('\b'); 
     } 
    } 
    System.out.println("finished!"); 
} 

यह कमांड प्रॉम्प्ट में पूरी तरह से काम करता है, लेकिन बैकस्पेस चरित्र ग्रहण के कंसोल में मान्यता प्राप्त नहीं है (गैलीलियो 20,090,920-1017 निर्माण):

यहाँ एक सरल उदाहरण है। यह बदले में एक अज्ञात चरित्र को दर्शाते हुए एक खाली वर्ग प्रदर्शित करता है। स्क्रीनशॉट देखें:

alt text

मैं कैसे ग्रहण करने के लिए "प्रदर्शन" ठीक से मिलता है बैकस्पेस? अर्थात। इसे पिछले चरित्र को हटाने दें।

यह वास्तव में यह के बाद से कोई देखने लायक दृश्य सिर्फ आदेश कंसोल में चलाया जाएगा है, लेकिन यह सिर्फ यह ग्रहण में काम करने के रूप में अच्छी तरह :)

+1

मुझे नेटबीन – PMorganCA

उत्तर

51

Eclipse Bug #76936. मैं उन पर भरोसा नहीं होता ठीक करने के लिए प्राप्त करने के लिए अच्छा होगा यह, और सूचीबद्ध कोई वर्कअराउंड नहीं हैं।

आपको एक प्लगइन ढूंढने में भाग्य हो सकता है जो एक और उन्नत कंसोल में योगदान देता है।

+0

में वही लक्षण दिखाई देते हैं ओह लड़का, यह लगभग 6 वर्ष पुरानी बग है। रिपोर्ट खोजने के लिए धन्यवाद। – BalusC

+15

टिप्पणी देखें # 24 - "... डीबग टीम में वर्तमान में इस पर काम करने के लिए समय/संसाधन नहीं हैं। ** योगदानों की बहुत सराहना की जाएगी। **" –

+0

'\ r' – dacwe

7

अच्छा, यह सच है कि आप प्रदर्शित प्रगति को हटाने के लिए बैकस्पेस \ b का उपयोग नहीं कर सकते हैं, लेकिन आप इसे लूप कॉलिंग println के साथ कंसोल साफ़ करके हटा सकते हैं। निस्संदेह यह लॉगज आपकी लॉग फ़ाइल को साफ़ नहीं करेगा!

+0

"कंसोल को साफ़ कर रहा है ...." वास्तव में कैसे? println() कंसोल पर पहले से मुद्रित लाइन को साफ़ नहीं कर सकता! – KNU

+0

यह पहले से मुद्रित आउटपुट को ऊपर की तरफ धक्का दे सकता है ताकि यह कंसोल के दृश्य क्षेत्र से बाहर हो जाए, जो कंसोल को प्रभावी रूप से साफ़ कर रहा हो। – simon

2

फिक्स्ड, ग्रहण मंगल ग्रह।

नोट, मैं निरंतर अद्यतन करने के लिए इसका उपयोग नहीं करता, क्योंकि ग्रहण कंसोल लगी हुई है।

+3

नियॉन 3 में अनफ़िक्स्ड ('System.out.println (" x \ by ")')। – Matthieu

-1

सिस्टम :out.print ('\ b') के बजाय, जबकि लूप के अंदर System.out.print ("\ b") का उपयोग करें;