Подсчет запятых

  • 10
  • Недоступна
С консоли считать имя файла. Посчитать в файле количество символов ',', количество вывести на консоль. Закрыть потоки. Подсказка: нужно сравнивать с ascii-кодом символа ','.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (61)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Dmytro Zhelezniak20 уровень, Харьков
5 февраля, 13:16
Код запятой 44, если не хотите тратить время на поиски таблицы ascii
Vaiki18 уровень, Минск
12 февраля, 15:01
спс
Николай19 уровень
вчера, 18:56
зачем это узнавать, если можно символ представить байтом и затем сравнивать байты?
byte b = (byte) (',');
S3R3N1TY22 уровень, Санкт-Петербург
31 января, 22:24
Можно найти код так
int code = (byte)',';
А потом просто в цикле
if(inputStream.read()==code)
                    count++;
Но лучше читать буфером, так как моим способом мы каждый раз обращаемся к диску за байтом, а это медленно.
Artur28 уровень
29 января, 10:55
Когда - нибудь я научусь закрывать потоки без напоминаний)
kin1631 уровень, Уфа
6 января, 12:07
public class Solution { public static void main(String[] args) throws IOException { FileInputStream file = new FileInputStream(new BufferedReader(new InputStreamReader(System.in)).readLine()); char c = ','; int r = (int) c; List<Character> chars = new ArrayList<>(); while (file.available()>0){ chars.add((char) file.read()); } file.close(); int count = 0; for(int i = 0; i < chars.size();i++){ int t = (int) chars.get(i); if(r == t){ count++; } } System.out.println(count); } }
Erik Ghukasyan27 уровень
22 января, 12:52
А можно и без List. Сразу после чтения проверяй запятая ли
Vitaly Khan35 уровень
6 декабря 2018, 00:23
не забывайте делать проверку массива на null перед тем, как искать в этом массиве запятые. - распространенная ошибка! искать запятые легче всего так: == ','
юрий шидловский19 уровень, Киев
11 декабря 2018, 08:29
зачем здесь массив? считал-сравнил>добавл
Vitaly Khan35 уровень
11 декабря 2018, 10:18
побайтовое чтение - это очень дорогая с точки зрения времени операция. программа реализованная вашим способом будет неэффективной. на предыдущей лекции нам рассказали, что есть способ читать данные блоками. для этого используется массив байтов (буфер). это существенно повышает производительность программы.
24 сентября 2018, 19:25
ascii код символа ',' - 44. При считывании - if (inputStream.read() == 44) count++, где count - сами знаете что...
Oleg Shegula24 уровень, Днепр
10 сентября 2018, 20:02
пробывал читать имя файла через Scanner не проходит( Scanner scanner = new Scanner(System.in); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); -так принимает
Александр Толкачёв22 уровень, Санкт-Петербург
11 сентября 2018, 12:48
валидатор отлично работает со сканнером
Andry Max35 уровень, Минск
8 августа 2018, 22:37
нашёл в комментах ниже. по моему доходчивое объяснение.
int code  = (int)',';
сам сразу сравнивал с символом, валидатор не пропускал...
Денис Гайфуллин25 уровень, Казань
20 июля 2018, 03:01
что нужно сделать чтобы решить согласно этой рекомендации? - нужно сравнивать с ascii-кодом символа ','.
Philip J.40 уровень, Днепр
8 августа 2018, 22:39
нужно найти таблицу симоволов ascii в интернете, найти там код "," и сравнить :)
Ярослав35 уровень
13 июня 2018, 18:03
Подказка использовать ascii только запутала меня ещё больше. В итоге просто решил, сравнивая с:
char s = ',';