Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
2 / 2 / 0
Регистрация: 13.10.2018
Сообщений: 245
1

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

09.03.2021, 00:25. Показов 3896. Ответов 12

Author24 — интернет-сервис помощи студентам
Имеется вот такой список продуктов записанный в txt файле, название, цена, количество
Ferrari 10 1
Maserati 20 2
Porsche 30 3

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

Пока вот такой код:

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;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2021, 00:25
Ответы с готовыми решениями:

Как правильно считать матрицу из текстовый файла, если числа разделены запятой
Здравствуйте! Считываю матрицу из текстового файла следующим образом: 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 ...

считать все числа из файла, сложить их и сумму записать в конец того же файла?
#include<iostream> #include<cstdlib> #include<cstdio> #include<cmath> #include<fstream> ...

12
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
09.03.2021, 00:46 2
Files.readAllLines(). Для каждой строки split(" ")
0
2 / 2 / 0
Регистрация: 13.10.2018
Сообщений: 245
09.03.2021, 00:58  [ТС] 3
xoraxax,
Нашёл такой код пытаюсь переделать, все числа считываются, но теперь не понятно как вывести строки в консоль и как посчитать стоимость, нужно ведь сначала умножать количество на цену, а потом это плюсовать к сумме.

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
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 секунд
Java
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();
        }
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
09.03.2021, 01:37 4
В твоём случае скорее всего никак
0
2 / 2 / 0
Регистрация: 13.10.2018
Сообщений: 245
09.03.2021, 11:42  [ТС] 5
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.
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
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();
    }
}
0
2700 / 2013 / 502
Регистрация: 17.02.2014
Сообщений: 9,389
09.03.2021, 13:33 6
Bronzor,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
System.out.println("input file name:");
        int mark, sumMarks = 0;
        try (BufferedReader reader = new BufferedReader(new FileReader(new Scanner(System.in).findInLine()))) {
            String strFile = null;
            boolean flagGood = true;
            while ((strFile = reader.readLine()) != null) {
                for (String words : strFile.split(" ")) {
                    if (Character.isDigit(words.charAt(0))) {
                        mark = Integer.parseInt(words);
                        if (mark < 4) flagGood = false;
                        sumMarks += mark;
                    }
                }
                if (flagGood)
                    System.out.printf("%s %.2f", strFile, 1.0 * sumMarks / 5);
                else flagGood = true;
                sumMarks = 0;
            }
        }catch (IOException e) {e.printStackTrace();}
1
2 / 2 / 0
Регистрация: 13.10.2018
Сообщений: 245
09.03.2021, 13:45  [ТС] 7
Aviz__, А как убрать вывод оценок? Только имя фамилия средний балл.
0
2700 / 2013 / 502
Регистрация: 17.02.2014
Сообщений: 9,389
09.03.2021, 14:07 8
3-я строка моего выше, должна быть такая:
try (BufferedReader reader = new BufferedReader(new FileReader(new Scanner(System.in).next()))) {
Цитата Сообщение от Bronzor Посмотреть сообщение
А как убрать вывод оценок?
8-я строка прямо кричит тебе, как.
0
2 / 2 / 0
Регистрация: 13.10.2018
Сообщений: 245
09.03.2021, 14:15  [ТС] 9
Aviz__,
Я исправил 3 строку
BufferedReader reader = new BufferedReader(new FileReader(fileName));

а 8 не совсем понял, у нас же в любом случае выводится вся S а убрать из неё оценки и оставить имя, фамилию?

Добавлено через 2 минуты
Обрабатывать ошибки не обязательно, для уменьшения кода я сделал так.
Кликните здесь для просмотра всего текста

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
Scanner sc = new Scanner(System.in);
 
        String fileName;
        System.out.println("input file name:");
        fileName = sc.nextLine();
        sc.close();
 
        BufferedReader reader = new BufferedReader(new FileReader(fileName));
        int mark, sum = 0;
        String S = null;
        boolean check = true;
        System.out.println("result:");
        while ((S = reader.readLine()) != null) {
            for (String words : S.split(" ")) {
                if (Character.isDigit(words.charAt(0))) {
                    mark = Integer.parseInt(words);
                    if (mark < 4)
                        check = false;
                    sum += mark;
                }
            }
            if (check)
                System.out.printf("%s %.2f\n", S, (double) sum / 5);
            else
                check = true;
            sum = 0;
        }
        reader.close();
0
2700 / 2013 / 502
Регистрация: 17.02.2014
Сообщений: 9,389
09.03.2021, 14:21 10
Цитата Сообщение от Bronzor Посмотреть сообщение
выводится вся
так сделай, чтобы не вся, а часть, если условие в 8-й не тру, то значит это ФИО, собирай его отдельно.

Добавлено через 3 минуты
Цитата Сообщение от Bronzor Посмотреть сообщение
Обрабатывать ошибки не обязательно
это тебе аукнется, если будешь писать код не для себя в будущем!
0
2 / 2 / 0
Регистрация: 13.10.2018
Сообщений: 245
09.03.2021, 14:22  [ТС] 11
Aviz__, В этом и заключается вопрос, как собирать,
после проверки на цифры, добавлял по разному name+=words+" "; вывод неправильный
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
09.03.2021, 14:33 12
Bronzor, а ты попробуй, для разнообразия, не просто код скопировать, а разобраться, как он работает
0
2700 / 2013 / 502
Регистрация: 17.02.2014
Сообщений: 9,389
09.03.2021, 14:47 13
Цитата Сообщение от Bronzor Посмотреть сообщение
как собирать
если слово не начинается на цифру, то это значит строка ФИО, туда его кидаешь. все!
0
09.03.2021, 14:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2021, 14:47
Помогаю со студенческими работами здесь

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

Считать из текстового файла числа и вывести их сумму
всем привет! такая задача надо с файла .TXT считать числа и вывести их сумму на екран!? помогите...

Как правильно считать два векторных массива из файла? Не работает вывод именно из файла
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;vector&gt; using namespace...

Как правильно считать с файла?
char inputBuffer =null; isr.read(inputBuffer); тут конечно же выдает NULLPointer exception....

Как правильно считать число из файла?
Как мне из файла считать правильно подобные числа 01 06 ... Выходит просто 1 6 ... Более того мне...

Как правильно считать пробел с файла?
Здравстуйте. Сделал я программную реализация Нормальных алгоритмов Маркова. В теории НАМ пустой...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru