2015-03-27 4 views
3

Я создаю текстовый анализатор с использованием java, я пытаюсь выполнить поиск по текстовому документу и подсчитать, сколько там буквы Capital.Java подсчет заглавных букв в текстовом файле

public static void main(String[] args) { 
    Scanner sc = new Scanner(CapitalCount.class.getResourceAsStream("test.txt")); 
    String s = sc.nextLine(); 
    int upperCaseCount = 0; 
    int linecount = 0; 

    while (sc.hasNextLine()) { 
     sc.nextLine(); 
     linecount++; 
    } 

    for (int i = 0; i < s.length(); i++) { 
     for (char c = 'A'; c <= 'Z'; c++) { 
      if (s.charAt(i) == c) { 
       upperCaseCount++; 

      } 
     } 
    } 
    System.out.println(upperCaseCount + ""); 
} 
} 

Я думаю, что мне придется делать какое-то рассчитывать на сколько строк есть, поэтому я добавил количество строк в верхней части, хотя я не уверен в том, как реализовать это с подсчет капитала, который работает только в первой строке.

+0

могли бы вы привести пример для ввода документа и связанной с ними продукции можно было бы ожидать. – MWiesner

+0

Можете ли вы изменить свой вопрос и объяснить, в чем проблема. Вызывает ли ошибка или не производит ожидаемый результат? –

ответ

8
  1. сканирование через каждые символы
  2. Проверьте символы находятся в пределах диапазона заглавных букв.

Для сканирования файла не требуется класс CapitalCount.

Ниже мой рабочий раствор:

public static void main(String[] args) { 
    Scanner sc = null; 
    try { 
     sc = new Scanner(new File("test.txt")); 
     int count = 0; 
     while(sc.hasNext()){ 
      String line = sc.nextLine(); 
      for(int i = 0 ; i < line.length(); i++){ 
       if(line.charAt(i) >= 'A' && line.charAt(i) <= 'Z'){ 
        count ++; 
       } 
      } 
     } 
     System.out.println("The number of capital letters are : "+count); 

    } catch (FileNotFoundException e) { 
     System.out.println(e.getMessage()); 
    } 
    finally{ 
     sc.close(); 
    } 

} 
+0

Ну, либо закройте свой ресурс 'Scanner', либо используйте try-with-resources. – Tom

+0

Раньше меня беспокоило только часть решения, но теперь я сделал @Tom. –

2

не обязательно внутренний цикл, чтобы проверить, если письмо, которое я заглавную букву. Изменить

for (char c = 'A'; c <= 'Z'; c++) { 
    if (s.charAt(i) == c) { 
     upperCaseCount++; 

    } 
} 

в

if (s.charAt(i) >= 'A' and s.charAt(i) <= 'Z') { 
    upperCaseCount++; 
} 
0

Вы не пытались назвать ".next (шаблон шаблон)" метод с рисунком для прописных букв? Чем я думаю, вы должны рассчитывать заглавную букву для каждой строки, так перед тем для цикла ..

1

Вы должны использовать Character.isUpperCase() метод вместо того, чтобы делать это вручную.

public static void main(String[] args) { 
    try { 
     Scanner sc = new Scanner(new File("test.txt")); 
     int capitalCount = 0; 
     int lineCount = 0; 
     while(sc.hasNext()){ 
      lineCount++; 
      String line = sc.nextLine(); 
      for(int i = 0 ; i < line.length(); i++){ 
       if(Character.isUpperCase(line.charAt(i))) { 
        capitalCount++; 
       } 
      } 
     } 
     System.out.println("Number of lines: "+lineCount); 
     System.out.println("Number of capital letters: "+capitalCount); 
    } 
    catch (FileNotFoundException e) { 
     System.out.println(e.getMessage()); 
    } 

} 
2

Попробуйте этот код:

public static void main(String[] args) { 
Scanner sc = new Scanner(CapitalCount.class.getResourceAsStream("test.txt")); 
int upperCaseCount = 0; 
int linecount = 0; 
String lineInput = null; 

while (sc.hasNextLine()) { 
    lineInput = sc.nextLine(); 
    linecount = lineInput .length(); 
    for(int i=0; i < linecount; i++) 
     if (Character.isUpperCase(lineInput.charAt(i))) upperCaseCount++; 
} 
System.out.println(upperCaseCount + ""); 
} 
Смежные вопросы