fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class StringApp
  6. {
  7.  
  8. // объ¤вление переменных - флаги и счетчики дл¤ всех видов слов
  9. private int letterWordCount = 0;
  10. private int letterWordOngoing = 0;
  11. private int digitWordCount = 0;
  12. private int digitWordOngoing = 0;
  13. private int symbolWordCount = 0;
  14. private int symbolWordOngoing = 0;
  15.  
  16. // функци¤ завершени¤ чтени¤ слова и увеличение счетчика слова на единицу
  17. private void countLastWord()
  18. {
  19. if ( letterWordOngoing != 0 ) { letterWordOngoing = 0; letterWordCount++; }
  20. else if ( digitWordOngoing != 0 ) { digitWordOngoing = 0; digitWordCount++; }
  21. else if ( symbolWordOngoing != 0 ) { symbolWordOngoing = 0; symbolWordCount++; }
  22. }
  23.  
  24. public void run()
  25. {
  26. // загрузка текста в массив - цикл считывани¤ одного символа текста
  27. Scanner in = new Scanner(System.in);
  28. String text = in.next();
  29. in.close();
  30.  
  31. if ( text.isEmpty() )
  32. {
  33. return;
  34. }
  35.  
  36. // проход по символам текста загруженного в массив
  37. for( int i = 0; i < text.length() && text.charAt(i) != 0; i++ )
  38. {
  39. // анализ символов: к какой группе они относ¤тс¤ и проверка состо¤ний
  40. if ( text.charAt(i) == '*'|| text.charAt(i) == '-'|| text.charAt(i) == '+' ) // проверка принадлежности к данному типу символов
  41. {
  42. if ( symbolWordOngoing == 0 )
  43. {
  44. countLastWord();
  45. symbolWordOngoing = 1;
  46. }
  47. }
  48. else if ( Character.isDigit( text.charAt(i) ) ) // проверка принадлежности к данному типу символов (цифра)
  49. {
  50. if ( digitWordOngoing == 0 )
  51. {
  52. countLastWord();
  53. digitWordOngoing = 1;
  54. }
  55. }
  56. else if ( Character.isLowerCase( text.charAt(i) ) ) // проверка принадлежности к данному типу символов (буква)
  57. {
  58. if ( letterWordOngoing == 0 )
  59. {
  60. countLastWord();
  61. letterWordOngoing = 1;
  62. }
  63. }
  64. else
  65. {
  66. System.out.printf("error: illegal character: %c / 0x%x\n", text.charAt(i), text.charAt(i));
  67. return;
  68. }
  69. }
  70.  
  71. countLastWord(); // финальное завершение текущего слова
  72.  
  73. // вывод количества посчитанных слов
  74. System.out.printf("letterWordCount = %d\n", letterWordCount);
  75. System.out.printf("digitWordCount = %d\n", digitWordCount );
  76. System.out.printf("symbolWordCount = %d\n", symbolWordCount);
  77.  
  78. // вычисление конечного результата
  79. if( letterWordCount > symbolWordCount ) { System.out.printf("в данном тексте больше групп букв, чем групп знаков\n"); }
  80. else if ( letterWordCount == symbolWordCount ) { System.out.printf("в данном тексте одинаковое количество групп букв и групп знаков\n"); }
  81. else { System.out.printf("в данном тексте групп букв меньше, чем групп знаков\n"); }
  82. }
  83.  
  84. public static void main( String[] args )
  85. {
  86. StringApp app = new StringApp();
  87. app.run();
  88. }
  89. }
Success #stdin #stdout 0.15s 321344KB
stdin
afsf1213**++
stdout
letterWordCount = 1
digitWordCount  = 1
symbolWordCount = 1
в данном тексте одинаковое количество групп букв и групп знаков