Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2011, 22:56   #1
AquaticSoul
Нубик в С++
Пользователь
 
Аватар для AquaticSoul
 
Регистрация: 15.12.2009
Сообщений: 42
По умолчанию Ввод\вывод в файл

Код:
package lab5;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;



public class Lab5 {
    String Key[];
    String Value[];


    protected Lab5(){
        Key = new String[1];
        Value = new String[1];
    }

    public static void main(String[] args) {


        Lab5 a = new Lab5();
        try {
            a.menu();
        } catch (IOException ex) {
            Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    void menu() throws java.io.IOException {
        Lab5 n = new Lab5(){
            //public void put(){};
        };

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        //Scanner inp = new Scanner( System.in );
        char choise;
        System.out.print("Что вы хотите сделать? \n[w] - записать новую пару в массив"
                + ", [p] - печатать весь массив, [e] - выход, "
                + "[d] - удаление элементов, [f] - найти элемент по ключу:\nВыбор: ");
        choise = (char)in.read();
        switch( choise ){
            case 'w':
                try {
                    put();
                } catch (Exception ex) {
                    Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 'p':
        try {
            printall();
        } catch (Exception ex) {
            Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
        }
                break;
            case 'e':
                System.exit(0);
                break;
            case 'd':
                try {
                    delete();
                } catch (Exception ex) {
                    Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
            case 'f':
                try {
                    find();
                } catch (Exception ex) {
                Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
                }
                break;
        }
    }


    protected void put() throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in, "Cp866"));
        //PrintWriter in = new PrintWriter(new OutputStreamWriter(System.out, "Cp866"), true);

        int size = Key.length;
        String tempKey;
        String tempVal;
        System.out.print("Введите ключ: ");
        tempKey = in.readLine();
        for( int i = 0; i < size; i++ ){
            if( tempKey.equals(Key[i]) ){
                System.out.print("Введите значение для ключа: ");
                tempVal = in.readLine();
                System.out.println("Вы действительно хотите заменить значение ключа: " + Key[i] + " = " + Value[i] + ""
                        + "\nна " + Key[i] + " = " + tempVal + "\n[y] - да, любая другая клавиша - нет");
                char choise = (char)in.read();
                if(choise == 'y'){
                    Value[i] = tempVal;
                    System.out.println("Данные заменены\n");
                } else
                    System.out.println("Замена не произведена\n");
                menu();
            }
        }
        size++;
        String TempKey[] = new String[size];
        String TempVal[] = new String[size];
        TempKey[0] = Key[0];
        if( TempKey[0] == null ){
            Key[0] = tempKey;
            System.out.print("Введите значение для ключа: ");
            Value[0] = in.readLine();
            System.out.println("Данные успешно записаны\n");
            menu();
        } else {
            System.arraycopy(Key, 0, TempKey, 0, size - 1);
            System.arraycopy(Value, 0, TempVal, 0, size - 1);
            //System.out.print("Введите ключ: ");
            TempKey[size-1] = tempKey;
            System.out.print("Введите значение для ключа: ");
            TempVal[size-1] = in.readLine();
            Key = TempKey;
            Value = TempVal;
            System.out.println("Данные успешно записаны\n");
            menu();
        }
    }

    void delete() throws Exception{
        BufferedReader in = new BufferedReader( new InputStreamReader( System.in, "Cp866" ));
        System.out.print("[d] - удалить один элемент, [c] - удалить все элементы, любая другая клавиша - отмена: ");
        char choise;
        choise = (char)in.read();
        if( choise == 'd' ){
            try {
                deleteOneElement();
            } catch (Exception ex) {
                Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            if( choise == 'c' )
            clear();
            else menu();
        }
    }
AquaticSoul вне форума Ответить с цитированием
Старый 12.05.2011, 22:57   #2
AquaticSoul
Нубик в С++
Пользователь
 
Аватар для AquaticSoul
 
Регистрация: 15.12.2009
Сообщений: 42
По умолчанию

Код:


    protected void deleteOneElement() throws Exception{
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in, "Cp866"));
        String tempKey;
        String TempKey[] = new String[Key.length];
        String TempVal[] = new String[Key.length];
        System.out.print("Введите ключ, который вы хотите удалить: ");
        tempKey = in.readLine();
        for( int i = 0; i < Key.length; i++ ){
            if(tempKey.equals(Key[i])){
                Key[i] = null;
                break;
            }
        }
        for( int i = 0; i < Key.length; i++ ){
            if(Key[i] == null){
                Value[i] = null;
                for( int j = i + 1; j < Key.length; j++ ){
                    TempKey[j - 1] = Key[j];
                    TempVal[j - 1] = Value[j];
                }
                break;
            }
            TempKey[i] = Key[i];
            TempVal[i] = Value[i];
        }
        if( TempKey.length == 1){
            Key = TempKey;
            Value = TempVal;
        } else {
            Key = new String[ TempKey.length - 1];
            System.arraycopy(TempKey, 0, Key, 0, TempKey.length - 1);
            Value = new String[ TempKey.length - 1];
            System.arraycopy(TempVal, 0, Value, 0, TempKey.length - 1);
        }
        System.out.println("Элемент с ключом " + TempKey + " успешно удалён\n");
        menu();
    }

    protected void clear(){
        System.out.println("Массив успешно очищен");
        try {
            new Lab5().menu();
        } catch (IOException ex) {
            Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void printall() throws Exception{
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out, "Cp866"), true);
        if( Key[0] == null ){
            System.out.println("\nВ массиве нет данных.");
        } else {
            System.out.print("\n{");
            System.out.flush();
            for( int i = 0; i < Key.length; i++ ){
                if( i == Key.length - 1)
                    break;
                pw.write( Key[i] + " = " + Value[i] + "; " );
                pw.flush();
            }
            pw.write( Key[Key.length-1] + " = " + Value[Key.length - 1] + "}\n");
            pw.flush();
            System.out.println( "Количество элементов в массиве = " + Key.length );
        }
        try {
            menu();
        } catch (IOException ex) {
            Logger.getLogger(Lab5.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    void find() throws Exception{
        BufferedReader in = new BufferedReader( new InputStreamReader( System.in, "Cp866"));
        String tempKey;
        System.out.print( "\nВведите ключ для поиска: " );
        tempKey = in.readLine();
        for( int i = 0; i < Key.length; i++ ){
            if( tempKey.equals(Key[i])){
                System.out.println( "\nИскомый элемент: " + Key[i] + " = " + Value[i] );
                menu();
            }
        }
    }
}
Нужно сделать то же самое, но запись и чтение в файл
А ещё в представленном коде, не могу понять почему не получается вывести русские буквы.
AquaticSoul вне форума Ответить с цитированием
Старый 20.05.2011, 23:19   #3
Леди Кошка
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 47
По умолчанию

Потому что в консоли кодировка не совпадает...
Леди Кошка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод\вывод в файл [Java] AquaticSoul Помощь студентам 1 12.05.2011 22:51
Ввод и вывод инф. в файл loader159 Общие вопросы C/C++ 8 25.05.2010 22:25
ввод/вывод данных из/в файл для данной программы? Tetramorf Общие вопросы C/C++ 0 14.05.2010 17:03
Удаление лишних пробелов. Ввод/вывод в файл. Иван 883 Помощь студентам 13 31.03.2009 19:39