Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Телефонный справочник 
:(
    Опции темы
tooncheg
Дата 22.8.2014, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.5.2013

Репутация: нет
Всего: нет



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

Код

import java.io.File;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
 
public class Read {
   
 
    public static void main(String[] args) {
        int i;
        String search = "Иван";
        String name = null;
        String surname = null;
        String phone = null;
        
        TreeMap<String, String> tm = new TreeMap<>();
                
        try {
            File text = new File("/home/user/test/1.txt");
            Scanner sc = new Scanner(text);
            while (sc.hasNext()) {
                String string = sc.nextLine().replaceAll(" +", "");
                name = string.substring(string.indexOf("name")+5, string.indexOf("surname"));
                surname = string.substring(string.indexOf("surname")+8, string.indexOf("phone"));
                phone = string.substring(string.indexOf("phone")+6);
                tm.put(surname, name);
                
//                System.out.println(string);
              }
            sc.close();
        } catch (Exception e) {
            }
        
//        System.out.println(name+" "+surname+" "+phone);
        for(Map.Entry<String,String> me : tm.entrySet()){
            if (me.getValue().equals(search)) {
                System.out.println(me.getKey()+" "+me.getValue());
            }
//            System.out.println(me.getKey());
//            System.out.println(me.getValue());
            
        }
        System.out.println(tm);
 
        System.out.println("");
         
    }
    
}


к примеру содержание текстового файла: 

name:Иван surname:Гончаров phone:1812
name:Федор surname:Тютчев phone:1803
name:Иван surname:Тургенев phone:1818

возникает множество вопросов: как реализовать поиск не зависимо от того какие параметры поиска (по фамилии или по имени или по фамилии и телефону и т.д.) Перерыл множество примеров на всех языках, но все не то. Направьте на правильный путь решения, подскажите.
PM MAIL   Вверх
Samotnik
Дата 27.8.2014, 21:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(tooncheg @  22.8.2014,  12:30 Найти цитируемый пост)
как реализовать поиск не зависимо от того какие параметры поиска (по фамилии или по имени или по фамилии и телефону и т.д.) 

Читаешь файл и ищешь любое совпадение, если нашлось, например "Гончар", то определяешь, что это фамилия и вытягиваешь только ее и целиком, в случае с "18", опять же вытягиваешь три телефона.
PM MAIL   Вверх
Samotnik
Дата 27.8.2014, 22:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



немного переделал, если структуру файла нельзя менять - скажи, что-нибудь придумаем
Код

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public class New {

    private static final String search = "Ivan";

    public static void main(String... args) {
        List<User> userList = new ArrayList<>();

        try {
            String file = new String(Files.readAllBytes(Paths.get("d:/temp/test.txt")));
            String[] string = file.split("\r\n");
            for (String str : string) {
                String[] string2 = str.split(":");
                userList.add(new User(string2[0], string2[1], string2[2]));
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        for (User user : userList) {
            if (user.getName().contains(search)) {
                System.out.println("Name exists! " + user.getName());
            }
            if (user.getSurname().contains(search)) {
                System.out.println("Surname exists! " + user.getSurname());
            }
            if (user.getPhone().contains(search)) {
                System.out.println("Phone exists! " + user.getPhone());
            }
        }
    }

    private static class User {
        String name;
        String surname;
        String phone;

        private User(String name, String surname, String phone) {
            this.name = name;
            this.surname = surname;
            this.phone = phone;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getSurname() {
            return surname;
        }

        public void setSurname(String surname) {
            this.surname = surname;
        }

        public String getPhone() {
            return phone;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }
    }
}


Код

Ivan:Tuchev:1812
Fedor:Tuchev:1803
Ivan:Turgenev:1818


Это сообщение отредактировал(а) Samotnik - 27.8.2014, 22:27
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.