2015-07-19 2 views
0

Я новичок в программировании на Java. Этот фрагмент вычисляет количество букв в каждом слове и сохраняет его как строку (исключая пробелы), но он вычисляется только до «большого» и не подсчитывает букв в «контейнере».Количество букв в предложении, не считая последнего слова

class piSong 
{ 
    String pi = "31415926535897932384626433833"; 
    public void isPiSong(String exp) 
    { 
     int i,count=0; 
     String counter = ""; 
     String str; 
     System.out.println(exp.charAt(25)); 
     for(i=0;i<exp.length()-1;i++) 
     { 
      if(Character.isWhitespace(exp.charAt(i))) 
      { str = Integer.toString(count); 
       counter += str; 
       count = 0; 
       continue; 
      } 
      count++; 

     } 
     System.out.println(counter); 
    } 
} 
public class isPiSong{ 
    public static void main(String[] args) 
    { 
     piSong p = new piSong(); 
     String exp = "can i have a large container"; 
     p.isPiSong(exp); 
    } 
} 

ожидается выход: 314157

выходной ток: 31415

+0

Поскольку вы учитесь заново, было бы разумно придерживаться [Соглашения о присвоении имен Java] (http://www.oracle.com/technetwork/java/codeconventions-135099.html). Именование имен классов с верблюжьим футляром - это не способ кодирования в Java :-) Получайте удовольствие при кодировании :-) –

ответ

3

Есть 2 вещи, которые вы должны исправить.

  1. В вашей петле, ваше состояние i<exp.length()-1. Зачем? Вы, очевидно, хотите включить и последний символ (который равен charAt(exp.length() -1)), поэтому вы должны быть либо i <= exp.length() -1, либо i < exp.length().

  2. Вы считаете, что вы должны считать буквы всякий раз, когда встречаете пробел. Но после подсчета последнего слова у вас нет пробела. Вот почему это не считается последним словом.

, чтобы исправить ошибки, добавьте count к counter после цикла.

// Loop ends here 
counter += count; 
System.out.println(counter); 
+0

Спасибо, тонна ... очень много :) –

0
String counter = ""; 
String[] array = exp.split(" "); 
for(String s: array){ 
    counter += Integer.toString(s.length); 
} 

Вторая строка разбивает строку в массив строк (разделения с использованием каждого экземпляра пространства в строке). Цикл проходит через каждую отдельную строку в массиве и добавляет ее длину к счетной строке. Предпочтительно использовать StringBuilder вместо +=, чтобы добавить к строке.

StringBuilder sb = new StringBuilder(); 
    String[] array = exp.split(" "); 
    for(String s: array){ 
     sb.append(Integer.toString(s.length)); 
    } 
String counter = sb.toString(); 

Но оба будут делать то же самое.

Смежные вопросы