0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141

Чтение из текстового файла

24.05.2016, 12:45. Показов 1279. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у меня вопрос вопросов ))
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.io.*;
class OpenFile {
    int array [][] = new int [20][50];
    public void open_file (String [] args){
        int i=0;
        FileInputStream fin = null;
        if (args.length != 1) {
            System.out.println("Use: ShowFile Eight.txt");
            return;
        }
 
        try{
            fin = new FileInputStream (args[0]);
            do{
                i = fin.read();
                System.out.print((char)i); // вот тут мой вопрос
            }while (i != -1);           
        } catch (IOException e) {
            System.out.println("Произошла ошибка ввода-вывода");
        } finally {
            try {
                if (fin !=null) fin.close();
            } catch (IOException e) {
                System.out.println("Ошибка закрытия файла");
            }
        }
    }
 
}
 
class Eight {
    public static void main (String [] args){
        OpenFile obj = new OpenFile();
        obj.open_file (args);
        
    }
}
программа считывает данные из текстового файла (в моем случае это 1000 цифр, вообще я пытаюсь решить задачу https://projecteuler.net/problem=8 ) так вот, по книге Шилта я вроде как нашел то, что мне нужно, но у меня вопрос вопросов по 16 строчке кода
Java
1
System.out.print((char)i);
в коде i имеет тип int (это следует из строчки 5 - int i=0т.е. в 16 строке (char)i это операция приведения типов? Просто мне то в итоге нужен двухмерный массив типа инт и char меня мало интересует, но если я 16 строку меняю на System.out.print((i); то вижу, что в i у меня какие то эм.. цифры, слабо связанные со значениями из текстового файла. Подскажите что это за значения и что делать дальше? что же мне - получать тип чар а потом его переводить в int? как то попахивает веловело ))
прикладываю так же текстовый файл который я считываю, а вот приложить файл Eight.java я почему то не смог, система загрузки говорит, что не корректный файл.
строка в консоли для запуска (ну после компиляции) :
Bash
1
java Eight Eight.txt
Спасибо за помощь ))
П.с. а еще вопрос, почему на форуме ответов в темах связанных c java сииильно меньше чем в темах с cpp. ??? java столь не популярна? или же те кто изучает java уже супер-про и у них не возникает столько вопросов?
Вложения
Тип файла: txt Eight.txt (1,020 байт, 2 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2016, 12:45
Ответы с готовыми решениями:

Как заменить чтение строки из консоли на чтение текстового файла?
основное задание: найти частоту суффикса (например, "ing") в текстовом документе. в прикреплённом коде текст вводится прямо в консоль,...

Чтение из текстового файла
Необходимо вместо массива in взять данные из файла .txt лежащего по адресу, к примеру, с:\\123.txt. Не подскажете как это лучше сделать?...

Чтение из текстового файла
добрый день! подскажите пожалуйста, как прочесть из файла data.txt, который получается путем запроса из командной сторки к любому серверу...

15
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
24.05.2016, 15:00
DimaAvatar, fin.read() читает один байт из потока. пусть этот байт - цифра 0. но 0 она лишь для вас когда вы просматриваете ее через текстовый редактор и видите в виде символа - для компьютера это байт в котором хранится код 48. именно эти коды вы увидите если будете выводить System.out.print(i)
Цитата Сообщение от DimaAvatar Посмотреть сообщение
почему на форуме ответов в темах связанных c java сииильно меньше чем в темах с cpp
на мой взгляд это отчасти связано с пристрастиями преподавательского состава отчасти с тем что ОС тяготеют к нативному коду и этот код как правило пишется на C/C++ в силу исторических причин которые в свою очередь связны с универсальностью данных языков что нисколько не умаляет значимости Java
1
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
24.05.2016, 16:10  [ТС]
vxg, Спасибо за ответ, да, я так и полагал про fin.read(), что же делать, чтоб из байт получить инт? Дело в том, что если я строчку меняю на
Java
1
System.out.print((int)i);
и в моем наивном сознание это операция приведения типов должна позволить мне получить интовые числа, хотя ... не понимаю как это сделать, ведь, c char все понятно, он занимает 1 байт и его побитовое чтение видимо устраивает для корректной (с моей точки зрения) восприятия, но int то явно больше 1 байта, эм... 32 и наверное поэтому замена char на int приводит к тому, что в выходной поток у меня выходят те же значения байтов что и без char int. каковой же решение (правильное) получать char а из него делать таки приведение типов к int?
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
24.05.2016, 16:22
DimaAvatar, у вас и так int зачем его еще раз приводить к int? вы хотите видеть 0? ну так выведите i - 48
0
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
24.05.2016, 16:43  [ТС]
vxg, ага int только в моем случае он каждый байт преобразует в число int (насколько я понимаю) что совсем далеко от того, что мне надо.
и выводимый поток System.out(i);очень далек от изначального массива из текстового файла
п.с. если не сложно, не могли бы запустить моей творчество у себя (ну по возможности) и подскажите в чем моя обшибка?
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
24.05.2016, 16:46
DimaAvatar, тогда поясните на примере чего вы хотите - покажите прямо здесь в теме содержимое файла (хотя бы пару чисел), то что вы ожидаете из него считать и то что реально считывает
0
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
24.05.2016, 21:27  [ТС]
vxg, да конечно, я прикладываю два скриншота. в первом мне удачно выводят массив чисел из прилагаемого текстового файла но тип отображаемых цифр char, как я понимаю из строчки 16 - System.out.print((char)i);
во втором скриншоте отображаются числа которые.. ну я так понимаю являются результатом побитового приведения байтов в инт. но этот набор чисел чуть более чем полностью не соответствует набору чисел из текстового файла. соответственно во втором случае я строчку 16 изменил на System.out.print(i);
Миниатюры
Чтение из текстового файла   Чтение из текстового файла  
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
24.05.2016, 23:40
DimaAvatar, в 1 млн первый раз повторю:
1 у вас в файле первые символы 731671
2 мы видим их на первом снимке где байты выводятся в виде символов (char)
3 на втором снимке мы видим численное значение этих байт
код символ
55 7
51 3
49 1
54 6
55 7
49 1
плюс ко всему этому некоторые коды не будут кодами цифр - ведь у вас есть переносы (0x0A)
====
что вы хотите вы так и не ответили. ваш код работает корректно. вы можете выводить символы как есть через (char)i либо коды символов через i либо цифры которые соответствуют этим символам через i - 48 (фактически эти цифры и будут символами в данном случае - просто мы будем выводить их как цифры а система вывода преобразует их в соответствующие символы). осталось только позаботится о переносах (или вообще убрать их) и можно делать все что угодно
0
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
25.05.2016, 08:53  [ТС]
vxg, да, я попробую ответить на вопрос, что же я все таки хочу, суть того что мне выводит в поток при System.out.print(i) Вы до меня донесли, спасибо, очень понятное объяснение, ну в некоторой части я до этого и сам дошел, но Вы расставили точки над. Спасибо. Что же мне надо, дело в том что с цифрами из текстового файла я буду осуществлять математические операции и мне бы хотелось получить их математическое значение, чтоб 7 было int 7 а не char (с которым я не могу производить операцию умножения) и не byte (55) а именно 7. Вот бы что мне хотелось. Эм... не знаю, насколько понятно я объяснил, ну условно говоря мне бы хотелось из 55 получить значение int 7. Спасибо еще раз.

Добавлено через 1 минуту
и вопрос то вроде плевый, но я ни как не могу сформулировать его... приведение типов? вроде нет ведь i у меня так и есть int, в общем... я слегонца затупил.
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
25.05.2016, 09:01
DimaAvatar, как получить цифру 7 именно как int 7 я вам рассказал: i - 48. Если хотите есть альтернатива: читаете байт, приводите к char, помещаете его в строку и делаете int digit = Integer.parseInt(s) но первый способ мне кажется проще
0
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
25.05.2016, 09:04  [ТС]
vxg, эм, аааааа т.е. байтовое значение 55 -48 = 7 и так для всех чисел???? да??
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
25.05.2016, 09:15
DimaAvatar, да для всех от 0 до 9 если у вас файл в кодировке ASCII или UTF-8. Помните про переносы только
1
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
25.05.2016, 09:35  [ТС]
vxg, да, с переносами я сейчас как раз и разбираюсь ))) но в целом спасибо большое ) чую скоро будет bingo )
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
25.05.2016, 09:42
DimaAvatar, переносы можно либо удалить из файла либо просто пропускать байты если их значение равно 0x0A
0
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
25.05.2016, 10:10  [ТС]
vxg, 0x0A ?? да? а я написал программку смотреть байтовые коды (в значение int) у меня переносы в int имеют значение 10.
от так я его посмотрел
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.*;
 
class Byte_simbol {
    public static void main (String [] args) throws IOException
    {
        int c;
        BufferedReader br = new BufferedReader(new
                InputStreamReader(System.in));
        System.out.println("For exit press - q please");
        do {
            c = br.read();
            System.out.println(c);
        } while (c !='q');
    }
}
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
25.05.2016, 10:18
Цитата Сообщение от DimaAvatar Посмотреть сообщение
у меня переносы в int имеют значение 10
0x0A означает число A в шестнадцатеричной системе что в десятичной равно конечно же 10
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2016, 10:18
Помогаю со студенческими работами здесь

Чтение из текстового файла
Дан файл с примерным содержанием: 1 кг 2 кг 1 тонна 3 центнера На экран должно выводиться 1 кг = 1000г ...

Чтение текстового файла
Пробую читать текстовой файл. package javaapplication3; import java.io.*; import java.nio.channels.*; import java.nio.*; class...

Чтение текстового файла
Добрый день , я только недавно начал обучение кодингу но меня вызвали на школьное состязание задание будет таковым у меня есть файл нужно...

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

Чтение текста из текстового файла построчно
Здравствуйте,мне нужно сначала выбрать рандомно файл ,а потом вывести первую строчку с цифрой ,а потом вывести остальные строчки.Можете...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru