2015-02-10 4 views
0

Я пытаюсь создать программу, которая читает из файла, и подсчитывает, сколько строчных букв, прописных букв, пробельных символов (вкладка, ввод и т. Д.) И всего остального.Подсчет символов в текстовом файле

Это код, который у меня есть, и он показывает нужное количество букв, но по какой-то причине «другой» счетчик показывает путь больше, чем нужно. Кто-нибудь знает, что я сделал неправильно?

File file = new File("C:\\Temp\\Test.txt"); 
    Scanner s = new Scanner(file).useDelimiter(""); 

    for (int i = 0; i < file.length(); i++) { 
     char c = s.next().charAt(0); 

     if (Character.isLetter(c)) { 
      if (Character.isLowerCase(c)) { 
       isLower++; 
      } else { 
       isUpper++; 
      } 
     } else if (Character.isSpaceChar(c) || (c == '\n') || (c == '\t')) { 
      isSpace++; 
     } else { 
      isOther++; 
     } 

    } 
+2

Для вашего второго условного, обратите внимание, что существует функция 'Character.isWhitespace', которая будет охватывать все три из этих случаев. – SirBraneDamuj

+1

Вы считаете цифры? –

+1

Помимо вашей проблемы, ваши имена переменных предполагают, что 'isLower, isUpper, isSpace, isOther' являются логическими. Вы должны переименовать их. –

ответ

0

isOther counter содержит другой материал, поскольку символы utf8 умножаются. 2. Проверьте кодировку и проверьте формат файла.