С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/55: Рейтинг темы: голосов - 55, средняя оценка - 4.89
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458

Вывод, основанный на значении переменной

22.03.2013, 14:47. Показов 10921. Ответов 161
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет,понадобилась такая штучка -программа.В ней есть int и он равен ,например 1,если он равен 1,то выводим содержимое первых десяти файлов,если 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
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
103
104
105
106
107
108
109
110
111
112
113
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.Scanner;
 
 
public class ListFile {
    public static void main(String[] arg) {
        String sod = null;// содержимое файлов
 
        
        
        String[] list = new File("c:\\prov").list();
        
        int poz = 0;
        while (true) {
            System.out.println("************************************");
            for (int i = poz, k = 0; i < list.length; i++, k++) {
                if (k == 10) {
                    poz += 10;
                    break;
                }
                // System.out.println(list[i]);
                HashSet<String> hs = new HashSet<String>();
                
                File fileread = new File("C:\\prov\\" + list[i]);
                
                try {
                    BufferedReader brl = new BufferedReader(
                            new InputStreamReader(
                                    new FileInputStream(fileread), "UTF-8"));
                    try {
                        while ((sod = brl.readLine()) != null) {
                            hs.add(sod);
                            System.out.println(hs);// это надо разделить на
                                                    // страницы
 
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
 
            }
            System.out.println("************************************");
 
            System.out.println("Вывести еще? (Y/N)");
            
            Scanner sc = new Scanner(System.in);
            
            //String s = sc.nextLine();
            int pagel = sc.nextInt();
            if(pagel == 2){
                System.out.println("************************************");
                System.out.println(pagel);
                System.out.println("************************************");
                for (int i = poz, k = 0; i < list.length; i++, k++) {
                    if (k == 20) {
                        poz += 20;
                        break;
                    }
                    // System.out.println(list[i]);
                    HashSet<String> hs = new HashSet<String>();
                    
                    File fileread = new File("C:\\prov\\" + list[i]);
                    
                    try {
                        BufferedReader brl = new BufferedReader(
                                new InputStreamReader(
                                        new FileInputStream(fileread), "UTF-8"));
                        try {
                            while ((sod = brl.readLine()) != null) {
                                hs.add(sod);
                                System.out.println(hs);// это надо разделить на
                                                        // страницы
 
                            }
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    } catch (UnsupportedEncodingException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
 
                }
                
            }
            
            
            //if (s.toLowerCase().startsWith("n")) {
                //break;
            //}
        }
        //System.out.println("END");
    }
}
А именно:
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
int pagel = sc.nextInt();
            if(pagel == 2){
                System.out.println("************************************");
                System.out.println(pagel);
                System.out.println("************************************");
                for (int i = poz, k = 0; i < list.length; i++, k++) {
                    if (k == 20) {
                        poz += 20;
                        break;
                    }
                    // System.out.println(list[i]);
                    HashSet<String> hs = new HashSet<String>();
                    
                    File fileread = new File("C:\\prov\\" + list[i]);
                    
                    try {
                        BufferedReader brl = new BufferedReader(
                                new InputStreamReader(
                                        new FileInputStream(fileread), "UTF-8"));
                        try {
                            while ((sod = brl.readLine()) != null) {
                                hs.add(sod);
                                System.out.println(hs);// это надо разделить на
                                                        // страницы
 
                            }
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    } catch (UnsupportedEncodingException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
Но я думаю,что все это(В ней есть int и он равен ,например 1,если он равен 1,то выводим содержимое первых десяти файлов,если 2 то остальной десятки и так далее.Вот как такое сделать??) можно реализовать более меньшим кодом,и красивее,так сказать

Добавлено через 3 минуты
Плюс в выше указанном коде ,надо для каждого inta прописывать содержимое файлов,может есть унивирсальное решение?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2013, 14:47
Ответы с готовыми решениями:

Как при значении переменной 101 и выше установить значение переменной на 100?
Я в C# новичок. Подскажите пожалуйста, как можно сделать чтобы когда значение переменной было 101 и выше, значение переменной...

Загвоздка в значении переменной
int i = 5; i = ++i + ++i; Чему будет равно i? Помню, в Страуструпе что-то похожее было, но не вспомню.

Пробелы в значении переменной
@echo off if %1 == KhZ910U9 ( goto m1 ) else ( goto m2 ) :m1 set cor1=\install path echo %cor1% == %2

161
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 17:56  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Antenka Посмотреть сообщение
Возможно, уведомляем пользователя, когда мы с этим закончили.
Это не требуется.
Цитата Сообщение от Antenka Посмотреть сообщение
Спрашиваем пользователя, какую страницу он хотел бы посмотреть.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Scanner;
 
public class pag {
    public static void main(String[] args) {
 
        System.out.println("акую страницу вы хотите посмотреть?: ");
        Scanner sc = new Scanner(System.in);
        String st = sc.nextLine();
        System.out.println(st);
 
    }
 
}
Прошу прощения:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Scanner;
 
public class pag {
    public static void main(String[] args) {
 
        System.out.println("Какую страницу вы хотите посмотреть?: ");
        Scanner sc = new Scanner(System.in);
        int page = sc.nextInt();
        System.out.println(page);
 
    }
 
}
Цитата Сообщение от Antenka Посмотреть сообщение
Программа завершает работу? Или продолжаем, пока нам пользователь не даст какую-то команду?
В будущем я планировал бы Из ответа сервлета брать int page,чему он равен,и выводить страницу по номеру))
я представляю так вверху алгоритм получения цифры номера страницы есть, далее получаем ,как в том коде позииции начала и конца,по ним смотрим какая введена цифра ,и выводим десять файлов,плюс проверка ,думаю надо создать конструкцию if()
else().типо,если это не число вывести ошибку,вообще вот этот момент

Добавлено через 22 секунды
Цитата Сообщение от Ванеек Посмотреть сообщение
как в том коде позииции начала и конца,по ним смотрим какая введена цифра ,и выводим десять файлов
плохо понимаю
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 18:07
Проект с кодом Вы пока не трогаете. Там должен быть пустой main. И все. Идея проектирование в том, чтобы разобраться с решаем задачей до кодирования. А не кодировать и решать проблемы "на скаку"

Итак, с учетом Ваших коррекций, общий план получается следующий:
1. Мы из указанной папки достаем все файлы, считываем содержимое и добавляем в массив.
2. Спрашиваем пользователя, какую страницу он хотел бы посмотреть.
3. Если страница введена корректно (это, не буква и она попадает в нужный диапазон), то выдаем набор строк из нашего массива. Если страница введена неверно, выдаем ругательства и просим ввести другой номер.
4. Программа завершает работу.

Общий алгоритм выведения страниц:
1. Пользователь вводит страницу.
2. Мы расчитываем диапазон исходя из введенного значения.
3. Выводим нужные страницы.

Не сложно, правда ведь? Это мы, получается, конкретизировали шаг 3 нашего общего плана.

Теперь нам нужно немного конкретизировать 2й шаг нашего алгоритма. Попробуйте (почитайте старую тему). Подумайте, как из введенного значения страницы мы можем получить начальное и конечное значение диапазона. Ведь нам только это и нужно

Повторюсь: пока никакого кода!
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 18:41  [ТС]
Цитата Сообщение от Antenka Посмотреть сообщение
Теперь нам нужно немного конкретизировать 2й шаг нашего алгоритма. Попробуйте (почитайте старую тему). Подумайте, как из введенного значения страницы мы можем получить начальное и конечное значение диапазона. Ведь нам только это и нужно
Такая задумка,берем,что ввел пользователь прибавляем ноль ,это конечная позиция,вычитаем 9,это число начальная позиция,берем их и выводим содержимое файлов.Такой же как увас,почти,алгоритм в той теме,но я думаю есть алгоритм лучше у меня пока только такой)

Добавлено через 24 минуты
получается нам нужно будет ввести две переменные start & end start равна page*10-9, а end равна page*10,а по ним у же выводим)Ну и плюс узнаем величину массива length нам поможет.Как вам?подходит?
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 18:54
Цитата Сообщение от Ванеек Посмотреть сообщение
получается нам нужно будет ввести две переменные start & end start равна page*10-9, а end равна page*10,а по ним у же выводим)Ну и плюс узнаем величину массива length нам поможет.Как вам?подходит?
Мы сейчас разбираемся с тем, как должна работать программа. Никаких длин и переменных у нас нет. И main все еще пустой

Цитата Сообщение от Ванеек Посмотреть сообщение
Такая задумка,берем,что ввел пользователь прибавляем ноль ,это конечная позиция,вычитаем 9,это число начальная позиция,берем их и выводим содержимое файлов.Такой же как увас,почти,алгоритм в той теме,но я думаю есть алгоритм лучше у меня пока только такой)
Замечательно. Оптимизацией мы займемся позже, если потребуется. Нам сейчас нужно выпустить первую работающую альфу

Т.е. шаг 2 алгоритма выливается в такое:
1. Вычисляем конец диапазона, как введенное значение * 10.
2. Вычисляем начало диапазона, как конец диапазона - 9.

Итого, давайте соберем все описание вместе:
1. Мы из указанной папки достаем все файлы, считываем содержимое и добавляем в массив.
2. Спрашиваем пользователя, какую страницу он хотел бы посмотреть.
3. Если страница введена корректно (это, не буква и она попадает в нужный диапазон), то :
3.1. Берем, что ввел пользователь.
3.2. Расчитываем диапазон исходя из введенного значения.
3.2.1. Вычисляем конец диапазона, как введенное значение * 10.
3.2.2. Вычисляем начало диапазона, как конец диапазона - 9.
3.3. Выводим нужные страницы.
5. Если страница введена неверно, выдаем ругательства и просим ввести другой номер.
6. Программа завершает работу.

Вот так приблизительно должна выглядеть наша программа. Я надеюсь, все шаги понятны?

Если да, теперь надо полумать что и где у нас будет расположено.

1. Т.к. блок вывода записей по номеру страниц планируется использовать и в другой программе, предлагаю его вынести в отдельный метод.
2. Так же, ввод файлов я бы тоже вынесла, чтобы не загромождать main.

В конечном итоге, в main у нас далжно быть только общение с пользователем и вызов методов.
Давайте начнем со 2го, более простого метода, который считывает файлы. Скомпонуйте его из кода, который у Вас есть.
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 19:08  [ТС]
Цитата Сообщение от Antenka Посмотреть сообщение
Давайте начнем со 2го, более простого метода, который считывает файлы. Скомпонуйте его из кода, который у Вас есть.
Т.е добавление в массив?содержимого файлов в аррайлист
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 19:11
Да, шаг 1 из нашего общего алгоритма.
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 19:25  [ТС]
Так,примерно??:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
 
public class pag {
    public static void main(String[] args) {
 
        // ArrayList<String> pages = new ArrayList<String>();
 
    }
 
    @SuppressWarnings("resource")
    static ArrayList<String> pagef(ArrayList<String> page, String s,
            BufferedReader br) {
        File file = new File("C:\\prov");
        String list[] = file.list();
        for (int i = 0; i < list.length; i++) {
            File fileread = new File("C:\\prov\\" + list[i]);
            try {
                try {
                    br = new BufferedReader(new InputStreamReader(
                            new FileInputStream(fileread), "UTF-8"));
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    while ((s = br.readLine()) != null) {
                        page.add(s);
                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } finally {
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return page;
    }
 
}
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 19:36
1. Знаете зачем у Вас живет вот эта конструция: "@SuppressWarnings("resource")"? Если нет - убираем.
2. Зачем этому методу входящие параметры, если Вы их не используете? Или начинайте использовать, или удаляйте. Почему то использование, что есть сейчас нельзя считать за нормальное? Т.к. page у нас ничего не содержит до вызова этого метода. Смысла передавать ее в него нет. Использования s я не нашла. К br та же претензия, что и к page.
3. Убираем миллион try/catch, оставляем один, отлавливающий исключения общего характера.
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 20:22  [ТС]
Вообще не знаю,как эти ошибки исправить,вот так пойдет:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
 
public class pag {
    public static void main(String[] args) {
 
        // ArrayList<String> pages = new ArrayList<String>();
 
    }
 
    static ArrayList<String> pagef(String s, BufferedReader br)
            throws IOException {
        ArrayList<String> page = new ArrayList<String>();
 
        File file = new File("C:\\prov");
        String list[] = file.list();
        for (int i = 0; i < list.length; i++) {
            File fileread = new File("C:\\prov\\" + list[i]);
            try {
                try {
                    br = new BufferedReader(new InputStreamReader(
                            new FileInputStream(fileread), "UTF-8"));
 
                } finally {
                    try {
                        br.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            } finally {
                br.close();
            }
 
        }
        return page;
 
    }
}
Добавлено через 6 минут
Вот только до чего додумался:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
 
public class pag {
    public static void main(String[] args) {
 
        // ArrayList<String> pages = new ArrayList<String>();
 
    }
 
    @SuppressWarnings("resource")
    static ArrayList<String> pagef(String s, BufferedReader br) {
        ArrayList<String> page = new ArrayList<String>();
 
        File file = new File("C:\\prov");
        String list[] = file.list();
        for (int i = 0; i < list.length; i++) {
            File fileread = new File("C:\\prov\\" + list[i]);
 
            try {
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileread), "UTF-8"));
 
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
 
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
 
            }
 
        }
        return page;
 
    }
}
Добавлено через 2 минуты
Цитата Сообщение от Antenka Посмотреть сообщение
Знаете зачем у Вас живет вот эта конструция:
Кстати зачем??

Цитата Сообщение от Antenka Посмотреть сообщение
Использования s
Блин забыл:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
 
public class pag {
    public static void main(String[] args) {
 
        // ArrayList<String> pages = new ArrayList<String>();
 
    }
 
    @SuppressWarnings("resource")
    static ArrayList<String> pagef(String s, BufferedReader br) {
        ArrayList<String> page = new ArrayList<String>();
 
        File file = new File("C:\\prov");
        String list[] = file.list();
        for (int i = 0; i < list.length; i++) {
            File fileread = new File("C:\\prov\\" + list[i]);
 
            try {
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileread), "UTF-8"));
 
                while ((s = br.readLine()) != null) {
                    page.add(s);
                }
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
 
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
 
            }
 
        }
        return page;
 
    }
}
Сами страницы,то в массив добавить

Добавлено через 1 минуту
Цитата Сообщение от Antenka Посмотреть сообщение
Убираем миллион try/catch, оставляем один, отлавливающий исключения общего характера.
Вот с этим помощь нужна.
Цитата Сообщение от Antenka Посмотреть сообщение
Знаете зачем у Вас живет вот эта конструкция: "@SuppressWarnings("resource")"? Если нет - убираем.
Без не все желтое,а именно

Цитата Сообщение от Ванеек Посмотреть сообщение
br = new BufferedReader(new InputStreamReader(
* * * * * * * * * * * * new FileInputStream(fileread), "UTF-8"));
Добавлено через 13 минут
Цитата Сообщение от Antenka Посмотреть сообщение
К br та же претензия, что и к page.
их в сам метод??

Добавлено через 1 минуту
А все вот:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
 
public class pag {
    public static void main(String[] args) {
 
        // ArrayList<String> pages = new ArrayList<String>();
 
    }
 
    static ArrayList<String> pagef(String s) {
        ArrayList<String> page = new ArrayList<String>();
        BufferedReader br = null;
        File file = new File("C:\\prov");
        String list[] = file.list();
        for (int i = 0; i < list.length; i++) {
            File fileread = new File("C:\\prov\\" + list[i]);
 
            try {
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileread), "UTF-8"));
 
                while ((s = br.readLine()) != null) {
                    page.add(s);
                }
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
 
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
 
            }
 
        }
        return page;
 
    }
}
с тру качами осталась проблема
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 20:27
1. Исправлено.
2. Вы правильно поняли принцип (на примере переменной page). Сделайте тоже самоя для br и удалите s, если оно не используется.
3. Немного теории по исключениям: все исключения в java являются, в конечном счете, производными от Exception. Т.е. если пройтись по иерархии наследования в любом типе исключений, мы всегда упремся в этот класс. Что это нам дает ... посмотрите на следующую запись:
Java
1
2
3
4
5
6
7
8
9
10
try {
                    br = new BufferedReader(new InputStreamReader(
                            new FileInputStream(fileread), "UTF-8"));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
если у нас выкинется UnsupportedEncodingException, мы сразу же словим его в первом блоке.
если FileNotFoundException, мы проверим, не является ли это исключение UnsupportedEncodingException. Если нет, то пойдем к следующему catch, который у нас и сделает его обработку.
если у нас выкинется другое исключение, которое не является одним из первых двух, мы его словим 3м блоком.

Принцип работы похож на switch-case.

В отлове исключений нам главное помнить одно: более общие конструкции должны стоять в конце. Наши исключения можно рассматривать как коробки. Например, в "коробок" Exception может поместиться любое исключение, т.к. он является родителем для их всех. Самый маленький коробок будет у тех исключений, которые не являются базовыми для других. Еще раз: маленькие коробкивверху. Давайте на предыдущем примере подробнее ... если немного переставить catch

Java
1
2
3
4
5
6
7
8
9
10
try {
                    br = new BufferedReader(new InputStreamReader(
                            new FileInputStream(fileread), "UTF-8"));
                } catch (Exception e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
если у нас выкинется UnsupportedEncodingException, мы спросим, является ли он Exception. Да. Сработает 1й обработчик.
если FileNotFoundException, мы спросим, является ли он Exception. Да. Сработает 1й обработчик.
и так для всех исключений. У нас первый блок в состоянии "принять" любое исключение и дальше мы продвинуться не сможем.

Так, перейдем от лирических отступлений к нашей задаче. Т.к. у нас нет различий в обработке разного рода исключений, можно просто ловить Exception.

Java
1
2
3
4
5
6
7
8
9
10
11
12
try{
   for (int i = 0; i < list.length; i++) {
      File fileread = new File("C:\\prov\\" + list[i]);
      br = new BufferedReader(new InputStreamReader(new FileInputStream(fileread), "UTF-8")); 
      while ((s = br.readLine()) != null) {
          page.add(s);
      }
      br.close();
   }
} catch(Exception e){
    e.printStackTrace();
}
Вам не кажется, что так легче читать программу?

А, и еще ... если вы внутри обрабатываете все исключения, совсем не за чем говорить, что они могут быть выброшены наружу (throws IOException)

Что говорит, если убираете SuppressWarnings?
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 20:34  [ТС]
Вот так лучше,наверно:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class pag {
    public static void main(String[] args) {
 
        // ArrayList<String> pages = new ArrayList<String>();
 
    }
 
    static ArrayList<String> pagef(String s) {
        ArrayList<String> page = new ArrayList<String>();
        BufferedReader br = null;
        File file = new File("C:\\prov");
        String list[] = file.list();
 
        try {
            for (int i = 0; i < list.length; i++) {
                File fileread = new File("C:\\prov\\" + list[i]);
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileread), "UTF-8"));
                while ((s = br.readLine()) != null) {
                    page.add(s);
                }
                br.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return page;
 
    }
}
Добавлено через 44 секунды
Цитата Сообщение от Antenka Посмотреть сообщение
Вам не кажется, что так легче читать программу?
Конечно,огромное спасибо))
Цитата Сообщение от Antenka Посмотреть сообщение
Что говорит, если убираете SuppressWarnings?
Все исправил)

Добавлено через 1 минуту
Что дальше?
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 20:36
Замечательно! Осталось избавиться от еще одной явно-локально переменной s и можно двигаться дальше
По нашему плану у нас вот:
1. Мы из указанной папки достаем все файлы, считываем содержимое и добавляем в массив.
2. Спрашиваем пользователя, какую страницу он хотел бы посмотреть.

Первое мы сделали на половину. Теперь осталось вывести. Добавьте в main вызов нашего метода, приглашение пользователю ввесли страницу и считывание введенной информации.
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 20:51  [ТС]
Цитата Сообщение от Antenka Посмотреть сообщение
Первое мы сделали на половину. Теперь осталось вывести. Добавьте в main вызов нашего метода, приглашение пользователю внести страницу и считывание введенной информации.
легко сказать,тружусь.


Цитата Сообщение от Antenka Посмотреть сообщение
Замечательно! Осталось избавиться от еще одной явно-локально переменной s и можно двигаться дальше
Вот:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class pag {
    public static void main(String[] args) {
 
        // ArrayList<String> pages = new ArrayList<String>();
 
    }
 
    static ArrayList<String> pagef() {
        ArrayList<String> page = new ArrayList<String>();
        BufferedReader br = null;
        String s = null;
        File file = new File("C:\\prov");
        String list[] = file.list();
 
        try {
            for (int i = 0; i < list.length; i++) {
                File fileread = new File("C:\\prov\\" + list[i]);
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileread), "UTF-8"));
                while ((s = br.readLine()) != null) {
                    page.add(s);
                }
                br.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return page;
 
    }
}
Добавлено через 7 минут
Вот так я вызвал содержимое:
Java
1
pagef();
Вот шаг 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
 
public class pag {
    public static void main(String[] args) {
 
        System.out.println("Какую страницу вам показать?: ");
        Scanner sc = new Scanner(System.in);
        int pageint = sc.nextInt();
        System.out.println(pageint);
 
        pagef();
 
    }
 
    static ArrayList<String> pagef() {
        ArrayList<String> page = new ArrayList<String>();
        BufferedReader br = null;
        String s = null;
        File file = new File("C:\\prov");
        String list[] = file.list();
 
        try {
            for (int i = 0; i < list.length; i++) {
                File fileread = new File("C:\\prov\\" + list[i]);
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileread), "UTF-8"));
                while ((s = br.readLine()) != null) {
                    page.add(s);
                }
                br.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return page;
 
    }
}
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 20:58
Отлично. Но с 2мя маленькими замечаниями
1. pagef(); возвращает Вам массив строк, с которыми Вы дальше будете работать. Его нужно куда-то сохранить.
2. Если планируется проверка на то, входит ли наша страница в нужный диапазон (кстати, планируется ли?), то считывание лучше поместить перед пользовательским вводом, чтобы у нас уже были данные для анализа.
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 21:14  [ТС]
Цитата Сообщение от Antenka Посмотреть сообщение
входит ли наша страница в нужный диапазон (кстати, планируется ли?),
Ну ,наверно,а поподробнее,что за проверка?


Цитата Сообщение от Antenka Посмотреть сообщение
Его нужно куда-то сохранить.
Тоже подробнее
Цитата Сообщение от Antenka Посмотреть сообщение
то считывание лучше поместить перед пользовательским вводом,
А считывание чего??
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 21:21
Цитата Сообщение от Ванеек Посмотреть сообщение
Ну ,наверно,а поподробнее,что за проверка?
Проверить можно на корректность ввода. Например, если пользователь ввел букву/слово вместо цифры. Еще можно проверить на следующую ситуацию: допустим, мы считали 20 записей. Это 2 страницы. А пользователь нам вводит 3. И нам на это тоже как-то надо отреагировать.

Если Вы будете это проверять, давайте сделаем это следующим шагом. Напишите код, который будет проверять ввод пользователя.

Цитата Сообщение от Ванеек Посмотреть сообщение
Тоже подробнее
вот тут, например:
Java
1
int pageint = sc.nextInt();
Вы сохраняете значение введенное пользователем в переменную. Почему бы не сделать нечто подобное и для файлов

Цитата Сообщение от Ванеек Посмотреть сообщение
А считывание чего??
pagef() считывает информацию из файлов, правильно? Я говорила именно об этом методе.
0
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 21:22  [ТС]
Цитата Сообщение от Antenka Посмотреть сообщение
и для файлов
для каких?
Цитата Сообщение от Antenka Посмотреть сообщение
Если Вы будете это проверять, давайте сделаем это следующим шагом. Напишите код, который будет проверять ввод пользователя.
Легко сказать,вот это не знаю(
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 21:28
Цитата Сообщение от Ванеек Посмотреть сообщение
для каких?
pagef() возвращает список данных, вычитанных из файлов. Мы дальше, по программе планируем с ним работать (вывод нужного диапазона), неплохо было бы нам его где-то запомнить)

Цитата Сообщение от Ванеек Посмотреть сообщение
Легко сказать,вот это не знаю(
Нам нужна проверка на то, что введенное значение цифра и на то, что эта цифра не выходит за допустимые рамки. Первое - легко гуглится. Второе - элементарная формула, вычисляемая на основе входного значения и количества элементов на странице. Пробуем
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
22.03.2013, 22:00  [ТС]
Что-то не получается проверка:
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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
 
public class pag {
    public static void main(String[] args) {
 
        pagef();
        int pageint;
 
        System.out.println("Какую страницу вам показать?: ");
        Scanner sc = new Scanner(System.in);
 
        try {
            int pageint = sc.nextInt();
        } catch (NumberFormatException e) {
            System.out.println("То,что вы ввели не является числом");
 
        }
        System.out.println(pageint);
 
    }
 
    static ArrayList<String> pagef() {
        ArrayList<String> page = new ArrayList<String>();
        BufferedReader br = null;
        String s = null;
        File file = new File("C:\\prov");
        String list[] = file.list();
 
        try {
            for (int i = 0; i < list.length; i++) {
                File fileread = new File("C:\\prov\\" + list[i]);
                br = new BufferedReader(new InputStreamReader(
                        new FileInputStream(fileread), "UTF-8"));
                while ((s = br.readLine()) != null) {
                    page.add(s);
                }
                br.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        return page;
 
    }
}
Добавлено через 6 минут
Цитата Сообщение от Antenka Посмотреть сообщение
Второе - элементарная формула, вычисляемая на основе входного значения и количества элементов на странице. Пробуем
А,что именно она должна сделать,поподробнее о ней можно?

Добавлено через 17 секунд
Цитата Сообщение от Antenka Посмотреть сообщение
неплохо было бы нам его где-то запомнить)
Где и как,поподробнее??
0
 Аватар для Antenka
56 / 56 / 0
Регистрация: 15.03.2013
Сообщений: 88
22.03.2013, 22:22
Цитата Сообщение от Ванеек Посмотреть сообщение
А,что именно она должна сделать,поподробнее о ней можно?
Я вот об этом:
Цитата Сообщение от Antenka Посмотреть сообщение
Еще можно проверить на следующую ситуацию: допустим, мы считали 20 записей. Это 2 страницы. А пользователь нам вводит 3. И нам на это тоже как-то надо отреагировать.
Цитата Сообщение от Ванеек Посмотреть сообщение
Где и как,поподробнее??
Ок, давайте пока опустим это ... как понадобится, Вы сами поймете, что где-то что-то потерялось

По поводу Вашей проверки:
Java
1
2
3
4
5
6
try {
            int pageint = sc.nextInt();
        } catch (NumberFormatException e) {
            System.out.println("То,что вы ввели не является числом");
 
        }
Из документации:
public int nextInt()
Scans the next token of the input as an int.
An invocation of this method of the form nextInt() behaves in exactly the same way as the invocation nextInt(radix), where radix is the default radix of this scanner.

Returns:
the int scanned from the input
Throws:
InputMismatchException - if the next token does not match the Integer regular expression, or is out of range
NoSuchElementException - if input is exhausted
IllegalStateException - if this scanner is closed
следует, что nextInt может кидать 3 типа исключений. Нам нужно выбирать из предложенного
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2013, 22:22
Помогаю со студенческими работами здесь

Замена символов в значении переменной
Доброго времени суток! Есть два файла: 1. config.ini: 2. backup.bat:

последний символ в значении переменной
Доброго всем времени суток! Бьюсь уже пару часов не могу вытащить последний символ в значении переменной, может кто-нибудь поможет? ...

Замена символов в значении переменной
Есть код который работал без помех (даты изымаемые из имени файла я в примере опустил). @Echo off REM Обрабатываем все файлы типа...

Ошибка в значении переменной, передаваемой в функцию
Странный вопрос конечно, ошибка в функции (верней число), но я не могу понять почему не работает правильно. #include &lt;iostream&gt; ...

Удалить несколько символов в значении переменной
Доброго времени суток ! Уважаемые профи помогите разобраться: Нужно удалить несколько символов в значении переменной...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru