ग्रहण के कंसोल में काम करने के लिए बैकस्पेस \ b कैसे प्राप्त करें?


79

मैं थोड़ा जावा एप्लिकेशन बना रहा हूं जिसमें प्रतिशत के साथ प्रगति सूचक होना चाहिए। प्रत्येक लूप में यह \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!");
}

यह पूरी तरह से कमांड प्रॉम्प्ट में काम करता है, लेकिन बैकस्पेस कैरेक्टर को ग्रहण के कंसोल (गैलीलियो बिल्ड 20090920-1019) में मान्यता प्राप्त नहीं है। इसके बजाय एक अज्ञात चरित्र को दर्शाते हुए एक खाली वर्ग प्रदर्शित करता है। स्क्रीनशॉट देखें:

वैकल्पिक शब्द

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

यह वास्तव में कोई शोस्टॉपर नहीं है क्योंकि यह सिर्फ कमांड कंसोल में चलाया जाएगा, लेकिन इसे ग्रहण के रूप में भी काम करना अच्छा होगा :)


1
मुझे NetBeans में समान लक्षण दिखाई देते हैं
PMorganCA

जवाबों:


57

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

आपके पास एक प्लगइन खोजने का सौभाग्य हो सकता है जो एक अधिक उन्नत कंसोल का योगदान देता है।


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

6
@ ब्रायनहंट जाहिर तौर पर यह महत्वपूर्ण नहीं है कि ग्रहण के अगले संस्करण के लिए क्या किया जाए। स्पष्ट रूप से यह आपके लिए पर्याप्त महत्वपूर्ण नहीं है।
थोरबजर्न रावन एंडरसन

14
मैंने बग तय किया, यह 4.5 एम 4 में होना चाहिए।
फिलिप मार्शेल

2
@PhilippeMarschall का मतलब यह नहीं है कि मैं आपकी मेहनत को कम कर दूं, लेकिन जहां तक ​​मैं बता सकता हूं, यह निश्चित रूप से निश्चित नहीं है (मंगल रिलीज का उपयोग करते हुए।) मुद्रण बैकस्पेस वर्णों का मेरे लिए कोई प्रभाव नहीं है। संपादित करें: ऐसा प्रतीत होता है कि बग वास्तव में पुनर्जीवित हो गया है, इस उत्तर से जुड़ी बग रिपोर्ट में अंतिम दो प्रविष्टियां देखें।
211 बजे b1nary.atr0phy

1
Bugs.eclipse.org/bugs/show_bug.cgi?id=76936 के अनुसार 22 जून, 2016 की लक्षित रिलीज़ तिथि के साथ ग्रहण 4.6 के लिए नियोजन की योजना बनाई गई है ( प्रोजेक्ट्स .eclipse.org/projects-eclipse/releases/4.6.0 / योजना )। : /
सिमोन

8

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


"सांत्वना के साथ समाशोधन ...." बिल्कुल कैसे? Println () कंसोल पर पहले से ही मुद्रित लाइन को साफ़ नहीं कर सकता है!
केयू

1
यह पहले से ही मुद्रित आउटपुट को ऊपर की ओर धकेल सकता है ताकि यह कंसोल के दृश्य क्षेत्र से बाहर हो जाए, जिससे कंसोल को प्रभावी ढंग से साफ किया जा सके।
सिमोन

3

निश्चित, ग्रहण मंगल।

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


6
नियोन में अविभाजित ।3 ( System.out.println("x\by"))।
Matthieu

3

अब उन्होंने इसे ठीक कर दिया, लेकिन यह डिफ़ॉल्ट रूप से अक्षम है। आपको इसे Interpret ASCII control charactersकंसोल प्राथमिकताओं में सक्षम करना चाहिए ।


यह जावा डेवलपर्स संस्करण के लिए ग्रहण आईडीई में काम किया: 2019-12 (4.14.0)। धन्यवाद
nessa.gp

-4

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.