Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Java SE Как показать пользователю в консоли пример со степенями в Java? https://www.cyberforum.ru/ java-j2se/ thread1495948.html
Здравствуйте! Скажите пожалуйста, как показать пользователю в консоли пример со степенями в Java, например: 4365? Заранее спасибо! С уважением, Павел.
Объявите недостающие переменные и закоментарьте те, которые нигде не используются Java SE
/* Большая чистка Объявите недостающие переменные и закоментарьте те, которые нигде не используются. */ public class Solution { public static void main(String args) { //String...
Java SE Напиcать программу, которая выводит на экран надпись 10 раз
/* Когда я вырасту, то хочу быть паровым экскаватором! Напиши программу, которая выводит на экран надпись: «Когда я вырасту, то хочу быть паровым экскаватором!» 10 раз. */ public class Solution {...
Java SE Как сделать метод который принимает массив int и сортирует его по возрастанию? Как сделать метод который принимает массив int и сортирует его по возрастанию? https://www.cyberforum.ru/ java-j2se/ thread1495783.html
Java SE Работа с массивами https://www.cyberforum.ru/ java-j2se/ thread1495509.html
Поясните, почему при использовании массива в методе println() выводятся символы, а не числа? public class Fibonacci { public static void main(String args) { int lo = 1; int hi...
Java SE Игра, угадай число с компьютером
Игра, угадай число с компьютером. Я допустим загадываю число, компьютер отгадывает. Я сделал фундамент кода, но дальше не могу сообразить.. Прощу помощи) import java.util.*; class Game2{...
Как нарисовать линию Java SE
Подскажите, пожалуйста, как нарисовать линию на экране монитора?
Java SE перевести из Делфи в Java задача Помогите перевести из Делфи в Java SE, пожалуйста) var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var https://www.cyberforum.ru/ java-j2se/ thread1495349.html
Java SE Задаче на методы для массивов https://www.cyberforum.ru/ java-j2se/ thread1495176.html
Создать двумерный массив из 8 строк по 5 столбцов в каждой из случайных целых чисел из отрезка . Вывести массив на экран. Мое решение было достаточно простым: /** * Created by Valeriu on...
Java SE Как поместить в двумерный массив строк, слова (String)? Как поместить в двумерный массив строк, слова (String)? Например: Hello Java !!! Hello Java !!! Hello Java !!! Hello Java !!! https://www.cyberforum.ru/ java-j2se/ thread1495060.html
95 / 95 / 50
Регистрация: 07.07.2015
Сообщений: 208
09.07.2015, 15:29 0

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл

09.07.2015, 15:29. Просмотров 4455. Ответов 3
Метки (Все метки)

Ответ

Прикольная задачка. Вот мое решение. Думаю попроще будет.
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import java.io.*;
import java.util.StringTokenizer;
 
/**
 * Из файла в файл...
 */
public class FileShit {
    public static void main(String[] args) throws IOException {
        File inputFile = new File("D:\\data.txt");
        File outputFile = new File("D:\\newdata.txt");
        FileReader fileReader = new FileReader(inputFile);
        char[] chars = new char[(int)inputFile.length()];
        if(fileReader.ready())
        {
            fileReader.read(chars);
            String s = new String(chars);
            fileReader.close();
            System.out.println(s);
        }
        String data = String.valueOf(chars);
        Person person = null;
 
        //парсим входные данные
        StringTokenizer st = new StringTokenizer(data," ,.!?\\\n\r");
        while (st.hasMoreTokens()){
            try {
                //запихиваем, то что распарсили в обьект
                person = new Person(st.nextToken(),
                        st.nextToken(),
                        Integer.parseInt(st.nextToken()),
                        st.nextToken());
                //проверяем, подходит ли обьект условиям
                if (goodPerson(person)){
                    //и записываем если подходит
                    wrightPerson(person, outputFile);
                }
            }
            catch (IllegalArgumentException iae){
                System.out.println(iae.getMessage());
            }
            catch (Exception e){
                e.printStackTrace();
            }
        }
    }
 
    /**
     * Уточняем, а подходит ли нам данный
     * @param person человек
     * @return true или генерируем ошибки.
     */
    private static boolean goodPerson(Person person) {
        if (person.age < 0) {
            throw new IllegalArgumentException("Wrong age! Your " + person.name + " " +
                                                    person.surname + " is " + person.age + " years old!");
        } else if (!(person.sex.equals("M") || person.sex.equals("F"))) {
            throw new IllegalArgumentException("Wrong sex! Sex of " + person.surname +" is " + person.sex);
        } else{
            return true;
        }
    }
 
    /**
     * Записываем
     * @param person человека
     * @param outputFile в файл
     * @throws IOException может выплюнуть
     */
    private static void wrightPerson(Person person, File outputFile) throws IOException {
        if(!outputFile.exists()){
            outputFile.createNewFile();
        }
        FileWriter out = new FileWriter(outputFile, true);
        try{
            out.write("Имя: " + person.name +
                    ", Фамилия: " + person.surname +
                    ", Возраст: " + person.age +
                    ", Пол: " + person.sex +
                    ", Инфа обьекта(например): " + person.toString() + "\n");
        }
        finally {
            out.close();
            System.out.println(person.surname + " writed!");
        }
    }
}
 
/**
 * Обект, который хранит данные об одном человеке
 */
class Person{
    String name;
    String surname;
    int age;
    String sex;
    Person(String name, String surname, int age, String sex){
        this.name = name;
        this.surname = surname;
        this.age = age;
        this.sex = sex;
    }
}


Вернуться к обсуждению:
Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2015, 15:29
Готовые ответы и решения:

Работа с двумерными массивами. Чтение данных из текстового файла и запись в текстовый файл
В матрице А найти отношение количества нулевых элементов в количестве ненулевых. Матрицу В...

Реализовать запись в файл и чтение из файла данных, хранящихся в массиве объектов пользовательского типа
Друзья, нужен код записи и чтения данных с файла, записанных ранее, а точнее выполнить заполнение...

Парсинг текстового файла и запись данных в Excel
есть текстовый док с такими строками : HS oper-209 UN Linux HS oper-203 UN Linux нужно...

Чтение и запись данных из текстового файла в массив
задача заключается в том, что надо с текстового файла считать данные( фио. пол.год. 1...

3
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.