Задать вопрос
@CheshKin

Сумма из ArryList -а, при сканировании файла?

Добрый день!
Уже третий день бьюсь над проблемой. Мне нужно получить сумму первого столбика. Читаемый файл имеет запись вида: "1 Петя Пупкин". Т.Е. допустим будет 300 записей с разными числами, а мне нужно будет получить сумму этих чисел (при условии, что я читаю их из файла и в файл будут добавляться записи).
Пример:
В файле с форматом .txt хранится
1 Petya Pupkin
15 Sashka Noviy
9 Bot Add
8 Serega Petrovich

Вывод СУММА (33) (А Имена и Фамилии отбрасываются)

Вот собственно код, который читает из файла и выводит в консоль весь файл:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

    public class Main {
        String line;
        List<User> mass = new ArrayList<User>();

        public void reader(){
            BufferedReader readFromFile = null;
            try {
                readFromFile = new BufferedReader(new FileReader("src//1.txt"));
                while ((line = readFromFile.readLine())!=null){
                    User newUser = new User();
                    newUser.key = line;
                    mass.add(newUser);

                   //User newUser1 = new User();
                    //newUser1.chislo = Integer.parseInt(String.valueOf(newUser));
                    //mass.add(newUser1);
                }
            }catch (IOException e) {
                e.printStackTrace();
            }finally{

                if (readFromFile !=null)
                    try{
                        readFromFile.close();
                    }catch (IOException e) {
                        e.printStackTrace();
                    }

            }
        }

        public static void main(String[] args) throws IOException {
            Main test = new Main();
            test.reader();
            for (User newUser : test.mass)
                System.out.println(newUser.key);

            //Main test1 = new Main();
            //test1.reader();
            //for(User newUser1 : test1.mass)
                //System.out.println(newUser1.chislo);
        }

        private class User {
            public String key;
            public int chislo;
        }
    }

Уже не знаю что делать.
  • Вопрос задан
  • 2293 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
DigitalSmile
@DigitalSmile
http://brainstorage.me/digitalsmile
Немного расширю ответ bimeg и выложу исходный код из комментариев.
public class Reader {
	private List<User> users = new ArrayList<User>();

	public void read(String path) {
		BufferedReader readFromFile = null;
		try {
			readFromFile = new BufferedReader(new FileReader(path));
			String line = null;
			while ((line = readFromFile.readLine()) != null) {
				User newUser = new User(line);
				users.add(newUser);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {

			if (readFromFile != null)
				try {
					readFromFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}

		}
	}

	public int calculateSum() {
		int sum = 0;
		for (User user : users) {
			sum += user.getKey();
		}
		return sum;
	}

	private class User {
		public int key = 0;
		public String value;

		public User(String line) {
			if (line != null && !line.isEmpty()) {
				String[] entries = line.split("\\s", 2);
				this.key = Integer.valueOf(entries[0]); // можно завернуть в
														// try {} catch
				this.value = entries[1];
			} else {
				// логируем
			}
		}

		public int getKey() {
			return key;
		}

		public String getValue() {
			return value;
		}
	}

	public static void main(String[] args) {
		Reader reader = new Reader();
		reader.read("src//1.txt");
		System.out.println(reader.calculateSum());
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bimeg
private static class User {
    public final String key;
    public final int num;

    public User(String key) {
        this.key = key;
        num = Integer.parseInt(key.split("\\s")[0]);
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы