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

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

22.03.2013, 14:47. Показов 12100. Ответов 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
30.03.2013, 18:16  [ТС]
Студворк — интернет-сервис помощи студентам
Че-то теперь нифига

Добавлено через 26 секунд
Цитата Сообщение от mutagen Посмотреть сообщение
запустим ка её
(((

Добавлено через 3 минуты
Вообще тут надо учитывать тот факт,что в java все с нуля,поэтому вывести пять первых элементов это:
0 1 2 3 4

Добавлено через 5 минут
Плюс момент,как сделать от какого-то элемента

Добавлено через 12 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class yrok1 {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        int[] a = { 1, 2, 3, 4, 5, 9, 7, 9, 10, 56 };
 
        for (int x = 0; x < 5; x++) {
            System.out.println("Первые пять элементов: " + a[x]);
        }
 
        int sx = a[6];
        int len = a.length;
 
        for (int c = len - sx; c < len; c++) {
            System.out.println("Элементы с шестого: " + a[c]);
        }
 
    }
 
}
0
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
30.03.2013, 18:20
mutagen,

Не по теме:

:rofl: а если

Java
1
int[] a = {1,1,1,1,1}

0
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 12:47  [ТС]
Ну так как,дальше сделать:
Цитата Сообщение от mutagen Посмотреть сообщение
2. вывести элементы массива с 6 элемента и до конца
3. вывести элементы с 2 по 7
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 13:00
ну например
Java
1
for (int x = start; x < arr.len; x++) {
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 13:34  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class yrok1 {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        int[] a = { 1, 2, 3, 4, 5, 9, 7, 9, 10, 56 };
 
        for (int x = 0; x < 5; x++) {
            System.out.println("Первые пять элементов: " + a[x]);
        }
 
        int start = 6;
        for (int x = start; x < a.length; x++) {
            System.out.println("Элементы с шестого: " + a[x]);
        }
 
    }
 
}
Вот все задание(вроде потихоньку двигается)):
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
public class yrok1 {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        int[] a = { 1, 2, 3, 4, 5, 9, 7, 9, 10, 56 };
 
        for (int x = 0; x < 5; x++) {
            System.out.println("Первые пять элементов: " + a[x]);
        }
 
        int start = 6;
        for (int x = start; x < a.length; x++) {
            System.out.println("Элементы с шестого: " + a[x]);
        }
 
        int st = 2;
        int en = 7;
        for (int mi = st; mi < en; mi++) {
            System.out.println("Элементы с 2 до 7: " + a[mi]);
        }
    }
 
}
Что дальше??
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 14:30
Цитата Сообщение от Ванеек Посмотреть сообщение
Что дальше??
теперь сделайте из этих 3 заданий метод

Java
1
2
3
4
5
6
7
int [] getSlice(int [] src , int start, int end) {
// скомбинировать из предыдущих задач общий метод чтобы не печатал а возвращал срез массива
// в вариантах вызова:
// start = 0, end = 5
// start = 2 end = 7
// start = 6 end = src.length
}
и перепишите ваш код с использованием этого метода
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 15:16  [ТС]
Что-то не получается в методе массиву дать значения:
Java
1
src = {1, 2, 3, 4, 5, 9, 7, 9, 10, 56};
Добавлено через 3 минуты
Аааа мы ему потом в маин передавать все это будем.Да?Тогда как ему из маин все передать:
Java
1
getSlice({1, 2, 3, 4, 5, 9, 7, 9, 10, 56}, 0, 0);
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 16:07
Это просто классика жанра - "язык не знай, поскорей программу пиши"
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Arrays;
 
public class MassOperations {
 
    public static void main(String[] args) {
        int[] src = {1, 2, 3, 4, 5, 9, 7, 9, 10, 56};
        int [] slice = getSlice(src, 2, 5);
        System.out.println(Arrays.toString(slice));
    }
    
    static int [] getSlice (int [] src, int start, int end) {
        int [] dest = null;
        // делаем ;)
        return dest;
    }
}
0
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 16:23  [ТС]
Короче тоже не знаю:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Arrays;
 
public class ZadMet {
 
    public static void main(String[] args) {
        int[] src = { 1, 2, 3, 4, 5, 9, 7, 9, 10, 56 };
        int[] slice = getSlice(src, 2, 5);
        System.out.println(Arrays.toString(slice));
    }
 
    static int[] getSlice(int[] src, int start, int end) {
        int[] dest = null;
 
        for (int mi = start; mi < end; mi++) {
            System.out.println("Элементы со 2 по 5: " + src[mi]);
            dest = src;
 
        }
        return dest;
    }
}
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 17:10
где там в задании слово напечатать?
там написано вернуть
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 17:17  [ТС]
Да это я просто для проверки,вот как вернуть незнаю:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Arrays;
 
public class ZadMet {
 
    public static void main(String[] args) {
        int[] src = { 1, 2, 3, 4, 5, 9, 7, 9, 10, 56 };
        int[] slice = getSlice(src, 2, 5);
        System.out.println(Arrays.toString(slice));
    }
 
    static int[] getSlice(int[] src, int start, int end) {
        int[] dest = null;
 
        for (int mi = start; mi < end; mi++) {
 
            dest = src[mi];
 
        }
        return dest;
    }
}
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 17:23
Цитата Сообщение от Ванеек Посмотреть сообщение
вот как вернуть незнаю:
выбирайте - поискать и разобраться или я могу вам написать, но тогда разобраться уже придется самому
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 18:04  [ТС]
Цитата Сообщение от Ванеек Посмотреть сообщение
dest = src[mi];
Вроде вот,(там ошибка подчеркивает после равно)присуждаю переменной ,и все должно делаться,а фиг((

Добавлено через 2 минуты
Цитата Сообщение от Ванеек Посмотреть сообщение
dest = src[mi];
Я так понял,что полученное значение массива можно приравнять только к переменной,int,например.

Добавлено через 1 минуту
arraycopy?

Добавлено через 9 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Arrays;
 
public class ZadMet {
 
    public static void main(String[] args) {
        int[] src = { 1, 2, 3, 4, 5, 9, 7, 9, 10, 56 };
        int[] slice = getSlice(src, 2, 5);
        System.out.println(Arrays.toString(slice));
    }
 
    static int[] getSlice(int[] src, int start, int end) {
        int[] dest = null;
 
        for (int mi = start; mi < end; mi++) {
 
            dest = Arrays.copyOf(src, mi);
        }
 
        return dest;
    }
}
Добавлено через 9 минут
хОТЯ все-равно не работает Arrays.copyOf
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 18:15
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Arrays;
 
public class MassOperations {
 
    public static void main(String[] args) {
        int[] src = {1, 2, 3, 4, 5, 9, 7, 9, 10, 56};
        int[] slice = getSlice(src, 2, 8);
        System.out.println(Arrays.toString(slice));
    }
 
    static int[] getSlice(int[] src, int start, int end) {
        if (start < 0 || end < 0 || start > end || start > src.length - 1 || end > src.length - 1) {
            throw new RuntimeException("Ошибка в параметрах");
        }
        int len = end - start + 1;
        int[] dest = new int[len];
        int filler = 0;
        for (int i = start; i <= end; i++) {
            dest[filler++] = src[i];
        }
        return dest;
    }
}
Добавлено через 33 секунды
Цитата Сообщение от Ванеек Посмотреть сообщение
Arrays.copyOf
это работа с коллекциями, читим?
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 18:28  [ТС]
Вот до такого я бы точно не додумался)):
Java
1
2
3
if (start < 0 || end < 0 || start > end || start > src.length - 1 || end > src.length - 1) {
            throw new RuntimeException("Ошибка в параметрах");
        }
Цитата Сообщение от mutagen Посмотреть сообщение
это работа с коллекциями, читим?
Точно,извиняюсь

Добавлено через 10 минут
Что дальше?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 19:36
Цитата Сообщение от Ванеек Посмотреть сообщение
Что дальше?
расскажи подробно что происходит в коде getSlice который я написал
0
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 20:02  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
static int[] getSlice(int[] src, int start, int end) {
Ну тут мы создаем метод,функцию и передаем ей входные параметры массив, переменную start,и end

Цитата Сообщение от mutagen Посмотреть сообщение
if (start < 0 || end < 0 || start > end || start > src.length - 1 || end > src.length - 1) {
Так тут условие если(переменая старт меньше нуля или и так далее,то вызвать исключение "Ошибка в параметрах"

Цитата Сообщение от mutagen Посмотреть сообщение
int len = end - start + 1;
* * * * int[] dest = new int[len];
ну тут первая строчка ясно,а вторая заполнаем массив dest чилом,которому равна переменная len

Цитата Сообщение от mutagen Посмотреть сообщение
int filler = 0;
Переменная филлер равна нулю

Цитата Сообщение от mutagen Посмотреть сообщение
for (int i = start; i <= end; i++) {
* * * * * * dest[filler++] = src[i];
* * * * }
Самое интересное цикл фор,который будет выполнятся ,пока условия в нем равны true,а условия эти переменная и равна старт и меньше или равно енд прибавить к и 1(инкрементирование)
далее массив дест равен массиву src[i]

Цитата Сообщение от mutagen Посмотреть сообщение
return dest;
тут мы возвращаем массив дест

Добавлено через 11 минут
Ну как??
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 20:38
Цитата Сообщение от Ванеек Посмотреть сообщение
ну тут первая строчка ясно,а вторая заполнаем массив dest чилом,которому равна переменная len
неправильно, берём книжку и идём читать про массивы
Цитата Сообщение от Ванеек Посмотреть сообщение
Переменная филлер равна нулю
для чего эта переменная?

Цитата Сообщение от Ванеек Посмотреть сообщение
Самое интересное цикл фор,который будет выполнятся ,пока условия в нем равны true,а условия эти переменная и равна старт и меньше или равно енд прибавить к и 1(инкрементирование)
далее массив дест равен массиву src[i]
тоже неправильно, берём книжку и читаем что в цикле фор и на каком месте значит

и потом подробно мне рассказать что в цикле происходит с каждой переменной
1
68 / 68 / 1
Регистрация: 21.12.2012
Сообщений: 458
31.03.2013, 21:00  [ТС]
Цитата Сообщение от mutagen Посмотреть сообщение
для чего эта переменная?
Не знаю(Длина массива?

Цитата Сообщение от mutagen Посмотреть сообщение
и потом подробно мне рассказать что в цикле происходит с каждой переменной
Ну в фор в скобочках сначала идет инициализация в данном случае создать переменную i и присвоить ей значение переменой start,далее идет условие,это значит повторять пока переменная i меньше или равна переменной end,далее итерационное выражение,т.е увеличивать каждый раз переменную i на 1,ну а дальше идет тело цикла

Добавлено через 3 минуты
Цитата Сообщение от Ванеек Посмотреть сообщение
ну тут первая строчка ясно,а вторая заполнаем массив dest чилом,которому равна переменная len
Ну в смысле создаем массив ,а длинной(количеством переменных типа int в нашем случае),будет число len
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
31.03.2013, 21:04
ок похоже на понимание, теперь напишите на базе метода getSlice программу которая напечатает массив по 2 элемента
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2013, 21:04

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru