Java чтение числа из файла

Как правильно считать числа с файла и посчитать сумму

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String fileName; System.out.println("input file name:"); fileName = sc.nextLine(); sc.close(); System.out.println("result:"); } }

Не понимаю как считать числа, нужно использовать scanner или BufferedReader, также нельзя редактировать имя файла, то есть писать
filename = filename + «.txt»;
или
filename = «/User/user/Downloads» + filename;

Как правильно считать матрицу из текстовый файла, если числа разделены запятой
Здравствуйте! Считываю матрицу из текстового файла следующим образом: m=importdata(‘in.txt’);.

Как считать числа с файла, и записать сумму в другой файл?
Задача A. Сума Назва вхiдного файлу: aplusb.in Назва вихiдного файлу: aplusb.out Обмеження.

Считать числа из строк файла и записать их сумму в строки другого файла
Дан файл input.txt с именами и количеством баллов: Ivanov A. A. 4 3 5 4 3 Petrov A. B 5 5 4 4 .

Эксперт Java

xoraxax,
Нашёл такой код пытаюсь переделать, все числа считываются, но теперь не понятно как вывести строки в консоль и как посчитать стоимость, нужно ведь сначала умножать количество на цену, а потом это плюсовать к сумме.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
try { String S = null; while ((S = reader.readLine()) != null) { String[] SS = S.split("[\\\\/№;:а-яА-Яa-zA-Z. \\-()<>\\[\\]@#\\$%^&?*~<>\\s]+"); for (String S1 : SS) { if (S1.length() > 0) { even = 0; if (even  2) { System.out.println(S1); mult *= Integer.parseInt(S1); even++; } } sum += mult; } } } catch (FileNotFoundException e) { e.printStackTrace(); } System.out.println(sum);

Добавлено через 7 минут
xoraxax, А если поделил на строки, как считать сумму?

Добавлено через 25 секунд

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ry { String S = null; while ((S = reader.readLine()) != null) { String[] SS = S.split(" "); for (String S1 : SS) { System.out.print(S1+" "); } System.out.println(); } } catch (FileNotFoundException e) { e.printStackTrace(); }

Эксперт Java

xoraxax, Здравствуйте, а как это реализовать?
Имеется файл тхт (имя, фамилия студента и 5 оценок) нужно вывести на экран имя, фамилия и средний балл тех студентов, у которых нету долгов (оценок меньше 4).
Имя фамилия 4 5 3 5 6
Имя фамилия 7 8 6 6 8
Имя фамилия 10 9 9 9 9
Имя фамилия 8 8 8 8 8
Имя фамилия 7 8 9 7 8
Имя фамилия 2 4 3 3 5
Имя фамилия 7 8 7 7 7

Добавлено через 11 минут
Как сделать проверку, если есть оценка ниже 4, значит не выводить данные об этом студенте?
Такой код выводит имя, фамилия и средний балл, но теперь надо отсортировать тех у которых есть оценка ниже 4.

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
import java.io.*; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); String fileName; System.out.println("input file name:"); fileName = sc.nextLine(); sc.close(); int even = 0, avg = 0; BufferedReader reader = new BufferedReader(new FileReader(fileName)); String S = null; System.out.println("result:"); while ((S = reader.readLine()) != null) { String[] SS = S.split(" "); even = 0; avg = 0; for (String S1 : SS) { if (even >= 2 && even  7) { avg += Integer.parseInt(S1); } even++; if(even=2) System.out.print(S1 + " "); } System.out.println((double) avg/5); } reader.close(); } }

Источник

Как прочитать числа из файла java

Для чтения чисел из файла можно воспользоваться классом Scanner и методом nextInt() .

Пусть у нас есть файл numbers.txt содержащий числа :

import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class App  public static void main(String[] args)  String fileName = "numbers.txt"; File file = new File(fileName); try  Scanner scanner = new Scanner(file); while (scanner.hasNextInt())  int number = scanner.nextInt(); System.out.print(number + " "); // => 1 2 3 4 5 6 > scanner.close(); > catch (FileNotFoundException e)  System.out.println("Ошибка чтения файла " + filaName); > > > 

Источник

Java. Байтовые потоки. Классы DataInputStream, DataOutputStream, FileInputStream, FileOutputStream. Примеры использования

Байтовые потоки. Классы DataInputStream , DataOutputStream , FileInputStream , FileOutputStream . Примеры использования

В данной теме продемонстрировано использование средств языка Java для работы с байтовыми потоками. Приведены примеры распространенных задач для решения которых используются классы DataInputStream , DataOutputStream , FileInputStream , FileOutputStream .

Поиск на других ресурсах:

1. Запись и чтение одномерного массива типа int[] в байтовый файловый поток. Пример

Пусть задан одномерный массив типа int[] , который нужно:

Для решения данной задачи хорошо подойдутклассы:

  • DataInputStream – поток ввода, который содержит методы для чтения данных стандартных типов Java, к которым принадлежит тип int ;
  • DataOutputStream – поток вывода, который содержит методы для записи данных стандартных типов, определенных в Java;
  • FileInputStream – поток ввода, который содержит методы, читающие данные из файла;
  • FileOutputStream – поток вывода, который содержит методы, записывающие данные в файл.

Чтобы организовать запись данных в файл нужно:

  • создать файловый поток типа FileOutputStream ;
  • созданный файловый поток поместить в конструктор DataOutputStream ;
  • использовать методы класса DataOutputStream для записи данных в файл.

Чтобы организовать чтение данных из файла нужно:

  • создать файловый поток типа FileInputStream ;
  • новосозданный файловый поток поместить в конструктор DataInputStream ;
  • использовать методы класса DataInputStream для чтения данных из файла.
import java.io.*; . public static void main(String[] args) throws IOException < // Исходные данные - некоторый массив целых чисел int[] arrInt = < 2, 5, -1, 100, 33 >; // 1. Записать массив arrInt в байтовый файл "integers.bin" // 1.1. Создать файловый байтовый поток, связанный с именем "integers.bin" FileOutputStream fs = new FileOutputStream("integers.bin"); // 1.2. Создать байтовый поток, содержащий методы чтения данных примитивных типов DataOutputStream ds = new DataOutputStream(fs); // 1.3. Записать количество элементов в массиве - используется метод write() ds.writeInt(arrInt.length); // 1.4. Записать массив целых чисел for (int i=0; iint)arrInt[i]); // 1.5. Закрыть файл "integers.bin" fs.close(); // ----------------------------------------------------------------- // 2. Считать массив целых чисел из байтового файла "integers.bin" int[] arrInt2; // массив, в который будут считаны данные из файла "integers.bin" // 2.1. Создать файловый поток, связанный с именем "integers.bin" FileInputStream fs2 = new FileInputStream("integers.bin"); // 2.2. Создать поток данных, связанный с файловым потоком fs2 DataInputStream ds2 = new DataInputStream(fs2); // 2.3. Считать количество целочисленных элементов, которые записаны в файле int count = ds2.readInt(); // 2.4. Выделить память для массива arrInt2 arrInt2 = new int[count]; // 2.5. Цикл чтения данных из ds2 и копирование их в массив arrInt2 for (int i=0; i // 2.6. Закрыть поток ds2 ds2.close(); // -------------------------------------------------------------- // 3. Вывести массив arrInt2 для контроля System.out.println("Array arrInt2: "); for (int i=0; iout.println(arrInt2[i]); >

Результат выполнения программы

Array arrInt2: 2 5 -1 100 33
2. Запись и чтение данных разных типов ( double , int , char ). Пример
  • записать в файл последовательно значения переменных типов double , int , char ;
  • прочитать значение переменных типов double , int , char .
import java.io.*; . public static void main(String[] args) throws IOException < // Исходные данные - значения double, int, char // 1. Запись данных // 1.1. Создать файловый байтовый поток, связанный с именем "data.bin" FileOutputStream fs = new FileOutputStream("data.bin"); // 1.2. Создать байтовый поток, содержащий методы чтения данных примитивных типов DataOutputStream ds = new DataOutputStream(fs); // 1.3. Записать число типа double ds.writeDouble(5.85); // 1.4. Записать число типа int ds.writeInt(2000); // 1.5. Записать символ типа char ds.writeChar('Z'); // 1.6. Закрыть файл "data.bin" fs.close(); // ---------------------------------------------------------------- // 2. Считать данные из байтового файла "data.bin" в переменные doubleData, intData, charData double doubleData; int intData; char charData; // 2.1. Создать файловый поток, который связан с именем "data.bin" FileInputStream fs2 = new FileInputStream("data.bin"); // 2.2. Создать поток данных, связанный с файловым потоком fs2 DataInputStream ds2 = new DataInputStream(fs2); // 2.3. Считать число типа double doubleData = ds2.readDouble(); // 2.4. Считать число типа int intData = ds2.readInt(); // 2.5. Считать число типа char charData = ds2.readChar(); // 2.6. Закрыть поток ds2 ds2.close(); // ------------------------------------------------------------- // 3. Вывести данные для контроля System.out.println("doubleData color: #0000ff;">out.println("intData color: #0000ff;">out.println("charData color: #333300;">⇑ 
3. Запись и чтение массива вещественных чисел в байтовый файл. Пример

В примере сначала в файл записывается массив чисел типа double, затем этот массив читается во внутренние структуры данных и выводится на экран. Используются классы FileOutputStream, DataOutputStream, FileInputStream, DataInputStream.

import java.io.*; . public static void main(String[] args) throws IOException < // Запись массива вещественных чисел в байтовый файл // 1. Подготовить массив вещественных чисел AD double AD[] = new double[5]; for (int i=0; i // 2. Создать экземпляр класса FileOutputStream FileOutputStream fOut = new FileOutputStream("array.bin"); // 3. Использовать класс DataOutputStream для вывода в файл DataOutputStream dOut = new DataOutputStream(fOut); // связать с файлом // 4. Запись данных о массиве в байтовый файл // 4.1. Сначала нужно записать количество элементов в массиве dOut.writeInt(AD.length); // 4.2. Цикл записи массива в файл for (int i=0; i // 5. Закрыть поток dOut dOut.close(); // 6. Вывести в консоль массив AD для контроля System.out.println("Array AD:"); for (int i=0; iout.println(AD[i]); // ---------------------------------- // Чтение вещественных чисел из файла в массив AD2[] // 7. Объявить результирующий массив double AD2[]; // 8. Создать экземпляр файла FileInputStream FileInputStream fIn = new FileInputStream("array.bin"); // 9. Создать экземпляр класса DataInputStream и связать его с файлом fIn DataInputStream dIn = new DataInputStream(fIn); // 10. Прочитать количество чисел в массиве int count; count = dIn.readInt(); // 11. Выделить память для массива AD2[] AD2 = new double[count]; // 12. Считать числа из файла в массив AD2[] for (int i=0; i // 13. Закрыть поток DataInputStream dIn.close(); // 14. Вывести массив AD2[] для контроля System.out.println("\nArray AD2:"); for (int i=0; iout.println(AD2[i]); >

Результат выполнения программы

Array AD: 1.0 3.5 6.0 8.5 11.0 Array AD2: 1.0 3.5 6.0 8.5 11.0
4. Пример копирования файлов с использованием байтового потока

В примере приводится фрагмент кода, который осуществляет копирование файлов. Используются средства классов FileInputStream и FileOutputStream .

import java.io.*; . public static void main(String[] args) throws IOException < // Копирование файлов. // Файл "inputFile.txt" копируется в файл "outputFile.txt" FileInputStream fi = null; FileOutputStream fo = null; try < // Попытка открыть файлы fi = new FileInputStream("inputFile.txt"); // исходный файл fo = new FileOutputStream("outputFile.txt"); // результирующий файл // Цикл копирования int d; do < // считать байты с fi d = fi.read(); // записать байты в fo if (d != -1) fo.write(d); > while (d != -1); System.out.println("Ok!"); > catch (IOException e) < // Если один из файлов не открыт, то вывести сообщение System.out.println("I/O error: " + e); > finally < try < // Если первый файл открыт, то закрыть его if (fi != null) fi.close(); > catch (IOException e2) < System.out.println("Cannot close file \"inputFile.txt\""); > try < // Если другой файл открыт, то закрыть его if (fo != null) fo.close(); > catch (IOException e2) < System.out.println("Cannot close file \"outputFile.txt\""); > > >

Связанные темы

Источник

Читайте также:  Bitrix24 api php пример
Оцените статью