2015-04-25 12 views
5

Her karakter dizisini bir String'de saymak istiyorum. Her karakter bir sayaç 1 ekler ve sekmeler Benim kodudur 4.Dize'de chars sayma, sekmelerle (' t') çalışmaz. Yanlış yöntemler kullanıyor muyum?

eklemek gerekir: Birlikte 4. Lines bir metin editörü çok farklı çizgiler ve set sekme alanı yaptık

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

chars ve sayılar sorun değil. Sonuç arasında bir kaç sekme eklediğimde her zaman 1'den büyüktür. Editörüm satırın 100 karakter uzunluğunda olduğunu ancak kodumun 101 olduğunu söylüyor. Bir satırda 2 veya 20 sekme olup olmadığı farketmez. Her zaman çok fazla 1 sayar.

Herhangi bir fikir veya daha iyi çözümler? Belki kullanılan yöntemler bu davranışa neden olur?

DÜZENLEME: Benim test hatları:

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

Kodum 'Satır 13' için tam 121 'Satır 12' karakterleri ve 120 sayar. 'Line 14' için 120 ve 'Line 15' 121 karakterleri sayar. Neden olduğuna dair hiçbir fikrim yok. satır beslemeleri yok sayılır. Basit dize için

+2

'myString' içinde nasıl okuyorsunuz? Satır besleme içerir mi? – pathfinderelite

+0

Kullanmakta olduğunuz String'i sağlayabiliyor musunuz? :) – sparsh610

+2

Sadece hızlı bir test yaptım ve benim için çalıştı. Not Bir kapanış ayracı eklemek zorunda kaldım: 'if (" \ t ".equals (" "+ c))' –

cevap

2

Peki çalışıyor, ben herhangi bir hata bulamadık kez ne zaman kodunuzu kopyalanmış ve onu idam. Her seferinde doğru çıktı aldı

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); 
      } 
     } 

Ve: -

Aşağıdaki kod çalıştı. Yani

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

R 
a 
m 

i 
s 

Counter=10 

SAMPLE OUTPUT RECEIVED :-

, benim için doğru değerlendirmektir. Lütfen girişlerinizi kontrol edin (satır besleme/satırbaşı iadeleri de hesaba katılıyor olsun). İyi şanslar.

1

İyi

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 
    } 
} 

veriniz dizenizle

+1

@shekharsuman teşekkürler: ama kullanmakta olduğu String görmek istiyorum – sparsh610

İlgili konular