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

  • 10
  • Недоступна
С консоли считать имя файла. Посчитать в файле количество символов ',', количество вывести на консоль. Закрыть потоки. Подсказка: нужно сравнивать с ascii-кодом символа ','.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (65)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
VK19 уровень, Киев
24 февраля, 13:44
сначала сравнивал с ; а надо было с запятой .__. я вообще вот так сделал))
int data = fileInputStream.read();

if (data == ',') {
    count++;
}
Пётр37 уровень, Москва
14 апреля, 13:01
Можно вообще без доп переменных
if (fis.read() == ',') count++;
Dmytro Zhelezniak30 уровень, Харьков
5 февраля, 13:16
Код запятой 44, если не хотите тратить время на поиски таблицы ascii
Vaiki18 уровень, Минск
12 февраля, 15:01
спс
Николай22 уровень
21 февраля, 18:56
зачем это узнавать, если можно символ представить байтом и затем сравнивать байты?
byte b = (byte) (',');
S3R3N1TY33 уровень, Санкт-Петербург
31 января, 22:24
Можно найти код так
int code = (byte)',';
А потом просто в цикле
if(inputStream.read()==code)
                    count++;
Но лучше читать буфером, так как моим способом мы каждый раз обращаемся к диску за байтом, а это медленно.
Artur41 уровень
29 января, 10:55
Когда - нибудь я научусь закрывать потоки без напоминаний)
NewBuy19 уровень, Санкт-Петербург
4 апреля, 17:38
Но не сегодня...
Пётр37 уровень, Москва
14 апреля, 13:06
для этого есть try with resources
kin1641 уровень, Уфа
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 Ghukasyan28 уровень
22 января, 12:52
А можно и без List. Сразу после чтения проверяй запятая ли
Vitaly Khan36 уровень
6 декабря 2018, 00:23
не забывайте делать проверку массива на null перед тем, как искать в этом массиве запятые. - распространенная ошибка! искать запятые легче всего так: == ','
юрий шидловский20 уровень, Киев
11 декабря 2018, 08:29
зачем здесь массив? считал-сравнил>добавл
Vitaly Khan36 уровень
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 в интернете, найти там код "," и сравнить :)