Английские буквы

  • 10
  • Недоступна
В метод main первым параметром приходит имя файла. Посчитать количество букв английского алфавита, которое есть в этом файле. Вывести на экран число (количество букв). Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (93)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
victor19 уровень
пятница, 08:41
можно обойтись без поиска ASCII код . просто делаем кастинг
if (data >= (int) 'A' && data <= (int) 'Z'
            || data >= (int) 'a' && data <= (int) 'z') {
        count++;
    }
}
Shamil18 уровень
8 часов назад
явный каст тут не нужен (int)
13Black20 уровень, Москва
8 февраля, 20:25
Использовал вариант решения из предыдущих задач с int[] array = new int[256].
Олег19 уровень, Киев
23 января, 12:05
кто знает подскажите пожалуйста! если объявить поток:
BufferedInputStream in = new BufferedInputStream(new FileInputStream(srcFileName);
а потом закрыть только "in":
in.close();
Собственно вопрос - произойдет ли автоматическое закрытие переданного в скобках "new FileInputStream(srcFileName);"?
Александр32 уровень
15 сентября 2018, 17:40
английские буквы находятся в диапазоне 65-122 байт.
4 декабря 2018, 08:22
По таблице в интернете 65-90 диапазон прописных букв, 97-122 строчных.
Максим27 уровень
28 августа 2018, 15:00
Люди подскажите, плиз, как перед отправокй на проверку не забывать убирать костыли, типа:
args = new String[]{"e:/temp/file1.txt"};
Какой-то напоминатель надо придумать, а то по нескольку попыток трачу в каждой задаче, где нужно с клавиатуры ввести или передать из командной строки аргументы. За идеи спасибо заранее!
Alexander Sedov30 уровень, Москва
30 августа 2018, 06:40
пиши в конце строки //todo будет подсвечиваться желтым даже =)
Максим27 уровень
30 августа 2018, 14:44
Классно! Пасибо большое! Теперь, хоть вижу что поубирать надо!
Andry Max35 уровень, Минск
9 августа 2018, 02:30
ах блин постоянно забываю закрыть поток, в итоге со второй попытки. решал через паттерн, сделал быстро, но всё равно кажется что заморочился, т.к. ниже сделали просто через сравнение символов, забыл что так можно)
Роман Патрушев23 уровень, Казань
24 августа 2018, 15:53
через какой паттерн?
Veronika26 уровень, Москва
29 ноября 2018, 08:34
https://javarush.ru/groups/posts/1135-reguljarnihe-vihrazhenija-v-java
Екатерина19 уровень, Москва
5 августа 2018, 20:30
прошло FileInputStream inputStream = new FileInputStream(args[0]); byte[] bytes = new byte[inputStream.available()]; int count = inputStream.read(bytes); inputStream.close(); int counter = 0; for (byte a : bytes) { if ((a >= 65 && a <= 90) || (a >= 97 && a <= 122)) { counter++; } } System.out.println(counter);
Voffka20 уровень, Киев
25 января, 11:52
int count = inputStream.read(bytes);
вот єто зачем ? "int count =" в данном случае ниочем.
Aquaelia19 уровень
27 января, 14:10
inputStream.read(bytes);
Shamil18 уровень
8 часов назад
Если придет символ допустим "¶"-у которого код 184 который кастится в 74, а это символ 'J' т.е. данный Java-код не верно подсчитает кол. англ. символов Лучше массив сделать int или char
Андрей37 уровень, Москва
31 июля 2018, 14:55
import java.util.regex.*; public class Solution { public static void main(String[] args) throws IOException { FileInputStream fin = new FileInputStream(args[0]); int count = 0; String result = ""; while (fin.available() > 0) { result += (char) fin.read(); } fin.close(); Pattern pat = Pattern.compile("[a-zA-z]"); Matcher mat = pat.matcher(result); while (mat.find()) { count++; } System.out.println(count); } }
Oleg Shegula24 уровень, Днепр
20 сентября 2018, 11:20
хороший подход в плане Pattern , спасибо за пример
Anastasiia20 уровень
24 сентября 2018, 14:41
да, с рег.выражениями удобнее, правда мне кажется что [a-zA-Z] правильнее, нет?
Anonymous #37410529 уровень, Амстердам
24 ноября 2018, 10:55
Файл в 1Мб создаст миллион неиспользуемых неудаляемых GC объектов String. Да ещё и к диску будет обращаться за каждым байтом.
Pavlic Morozov (pashok09i)25 уровень, Екатеринбург
9 января, 20:30
отделался одним циклом
while (fis.available() > 0) {
            if (p.matcher(Character.toString((char)(fis.read()))).matches())
                count ++;
        }
Дмитрий Абдуразаков22 уровень, Москва
26 января, 21:29
Можно воспользоваться StringBuider-ом
Georgy18 уровень, Москва
четверг, 16:39
Pavlic Morozov (pashok09i). Спасибо, а то я и так и этак через регулярки пробовал, сначала затупил - делал проверку целой строки, сразу догадался что надо делать проверку всех char по очереди кастуя их в обертку Character, но забыл про toString :)
Ярослав35 уровень
14 июня 2018, 20:48
Сначала заморочился, начал было переводить содержимое файла в массив символов, и потом в двойном цикле проверять на соответствие каждый символ с другим массивом, содержащем английский алфавит. Но потом дошло - можно же считывать по символу и сразу проверять на соответствие. В итоге за 5 минут переписал код и прошел валидацию.
Oleg Solovichenko29 уровень, Екатеринбург
6 июня 2018, 19:24
использовал FileReader он вроде символы читает, а не байты