2015-04-25 4 views
5

मैं प्रत्येक चार को एक स्ट्रिंग में गिनना चाहता हूं। हर चार एक काउंटर करने के लिए 1 कहते हैं और टैब 4.स्ट्रिंग में वर्णों की गणना करना टैब (' t') के साथ काम नहीं करता है। क्या मैं गलत तरीकों का उपयोग कर रहा हूं?

जोड़ना चाहिए मेरे कोड है:

int counter = 0; 
for(char c : myString.toCharArray()) { 
    if("\t".equals(""+c)) { 
     counter = counter + 4; 
    } else { 
     counter++; 
    } 
} 

मैं के साथ 4. लाइन्स करने के लिए एक पाठ संपादक में एक बहुत अलग लाइनों और सेट टैब अंतरिक्ष बनाया है वर्ण और संख्या कोई समस्या नहीं है। जैसे ही मैं परिणाम के बीच कुछ टैब जोड़ता हूं, हमेशा 1 से अधिक होता है। मेरा संपादक कहता है कि रेखा 100 वर्ण लंबी है लेकिन मेरा कोड 101 मायने रखता है। इससे कोई फर्क नहीं पड़ता कि लाइन में 2 या 20 टैब हैं। यह हमेशा 1 बहुत अधिक मायने रखता है।

कोई विचार या बेहतर समाधान? शायद इस्तेमाल किए गए तरीकों से इस व्यवहार का कारण बनता है?

संपादित करें: मेरे परीक्षण लाइनों:

Line 12: 121 characters ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd 
Line 13: 120 characters dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd 
Line 14: 119 characters with tabs                     kkk 
Line 15: 120 characters with tabs                     lkkk 

मेरे कोड 'लाइन 13' के लिए और के लिए 'लाइन 12' वास्तव में 121 पात्रों 120 गिना जाता है। 'लाइन 14' के लिए यह 120 और 'लाइन 15' 121 वर्णों के लिए गिना जाता है। मुझे कोई जानकारी नहीं है की क्यों। रेखा-फीड अनदेखा हो जाते हैं।

+2

आप 'myString' में कैसे पढ़ रहे हैं? क्या इसमें लाइन-फ़ीड्स शामिल होंगे? – pathfinderelite

+0

क्या आप कृपया स्ट्रिंग प्रदान कर रहे हैं जो आप उपयोग कर रहे हैं :) – sparsh610

+2

मैंने अभी एक त्वरित परीक्षण किया है, और यह मेरे लिए काम करता है। नोट मुझे एक बंद ब्रेस जोड़ना पड़ा: 'अगर ("\ t" .equals ("" + c)) ' –

उत्तर

2

ठीक है, मैं अपने कोड की नकल की और यह मार डाला, एक बार जब मैं किसी भी गलती नहीं पा सके।

मैं निम्नलिखित कोड की कोशिश की: -

import java.util.Scanner; 
    public class Alpha{ 
    public static void main(String[] args){ 
     int counter = 0; 
     Scanner s= new Scanner(System.in); 
     System.out.println("Enter a String :- "); 
     String myString=s.nextLine(); 
      for(char c : myString.toCharArray()) { 
       System.out.println(c); 
       if("\t".equals(""+c)) { 
       counter = counter + 4; 
       } 
       else { 
       counter++; 
       } 
      } 
      System.out.println("Counter="+counter); 
      } 
     } 

और, मैं सही उत्पादन हर बार प्राप्त किया।

SAMPLE OUTPUT RECEIVED :-

Ram is/t    // Comment---> /t represents tab-hit after "is" word 

R 
a 
m 

i 
s 

Counter=10 

तो, मेरे लिए, यह सही ढंग से मूल्यांकन कर रही है। कृपया अपने इनपुट जांचें (चाहे लाइन-फ़ीड्स/कैरिज-रिटर्न भी गिना जा रहा हो)। सौभाग्य।

1

सरल स्ट्रिंग के लिए

यह अच्छा

package test; 


public class Test { 

    public static void main(String[] args) { 
     int counter = 0; 
     String myString = "aghfhg\n  \n"; 
     for (char c : myString.toCharArray()) { 
      if ("\t".equals("" + c)) { 
       counter = counter + 4; 
      } else { 
       counter++; 
      } 
     } 
     System.out.println(counter); // output is 13 including 1 space , 1 tab and 2 line characters 
    } 
} 

अपने स्ट्रिंग प्रदान करें चल रहा है

+1

@shekharsuman धन्यवाद: लेकिन वह स्ट्रिंग देखना चाहता है जिसका वह उपयोग कर रहा है – sparsh610

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

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