2016-11-01 2 views
1

Пытается написать программу, которая будет считать слова в строке с использованием простых строковых методов и столкнулась с ошибкой «не могу найти символ». Я знаю, что это из-за переменной «count», но я не могу придумать какой-либо другой способ сделать это. Любая помощь оценивается. Кстати логика я использую отсчитывает пространства, а затем добавление 1.Подсчет слов в строке в JAVA

import java.util.Scanner; 
public class exam{ 
    public static void main(String[]args) 
    { 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter"); 
     String s1= new String(scan.nextLine()); 

     for(int num1 =0; num1<= s1.length()-1; num1++) 
     { 

     if(s1.charAt(num1)==' ') 
     { 
      int count =0; 
      count++; 
     } 

     System.out.println(count+1); 
     } 
    } 
} 
+0

Вам необходимо объявить его за пределами цикла. –

ответ

1

Объявляет переменную count вне состояния if. Вместо этого:

if(s1.charAt(num1)==' ') 
{ 
int count =0; 
count++; 
} 

Как это:

int count =0; 
if(s1.charAt(num1)==' ') 
{ 
count++; 
} 

Это позволит решить "не может найти символ" ошибки, но программа все равно будет нарушена.

Чтобы зафиксировать, переместите декларацию за пределы цикла for.

Btw программа ужасно отформатирована. Используйте среду IDE, такую ​​как IntelliJ или Eclipse, чтобы переформатировать ее красиво.

+0

Я искренне не знаю, как я не думал о том, чтобы переместить его из цикла for, спасибо за это. Подумайте о другом IDE за вашу помощь. –

0

Если вы используете Java 8, вы можете попробовать lambdas и функциональное программирование. Например, один из способов подсчета количества пространств вашей строки и добавить его с помощью лямбды может быть:

import java.util.Scanner; 

public class stream { 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter"); 
     String s1= new String(scan.nextLine()); 
     System.out.println(s1.chars().reduce(1, (a, b) -> a + (b == ' ' ? 1 : 0))); 
    } 
} 

Надеется, что это помогает.

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