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

Добавление в массив

18.04.2013, 22:14. Просмотров 1294. Ответов 6
Метки нет (Все метки)

Привет,форумчане)
А подскажите,пожалуйста ,как избежать лесенки:
Java
1
2
3
4
[1
1,2
1,2,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
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
 
public class lcss {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
 
        String listl[] = new File(
                "C:\\apache-tomcat-6.0.36\\webapps\\wasks\\WEB-INF\\linksearchbase\\")
                .list(new FilenameFilter() {
                    public boolean accept(File dir, String namelink) {
                        return namelink.endsWith(".html");
                    }
                });
        
        List<String> pagelist = new ArrayList<String>();
        String myName = "Яндекс";
        BufferedReader brl = null;
 
        for (int l = 0; l < listl.length; l++) {
            String namelink = listl[l];
            namelink = namelink.substring(0, namelink.lastIndexOf(".html"));
            File filel = new File(
                    "C:\\apache-tomcat-6.0.36\\webapps\\wasks\\WEB-INF\\linksearchbase\\"
                            + listl[l]);
            try {
                brl = new BufferedReader(new InputStreamReader(
                        new FileInputStream(filel), "UTF-8"));
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
 
            for (String word : myName.split(" ")) {
 
                for (String linkname : namelink.split(" ")) {
 
                    if (word.equalsIgnoreCase(linkname)) {
 
                        String line;
 
                        try {
                            while ((line = brl.readLine()) != null) {
                                pagelist.add(line + "\n");
                                // System.out.println(pagelist.size());
                                int sizelic = pagelist.size();
                                System.out.println(sizelic);
 
                                for (int isc = 0; isc < 10; isc++) {
 
                                    System.out.println(pagelist);
 
                                }
 
                            }
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
 
                    }
 
                }
 
            }
            
        }
 
    }
 
}
Я в нем пытаюсь вывести 10 элементов из arraylista,но видимо выводятся десять копий всего листа))
Но если вывести
Java
1
while ((line = brl.readLine()) != null) {
просто line,то все нормально,что посоветует,как вывести 10 элементов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2013, 22:14
Ответы с готовыми решениями:

Добавление слов в массив
Как лучше добавлять в массив слова из строки, если строка состоит из нескольких...

Добавление символа в массив
Привет, прошу помочь с проблемой, начал учить джаву и встал такой вопрос, а...

Добавление элемента в массив
есть такой код public class Student { private int id; private String...

Добавление элемента в массив
Прощу прощения за тупой вопрос, но все же. Есть класс Library. В нем я...

Добавление в массив четные числа
Задача,добавить в массив четные числа от 1 до 20 У меня добавляются в массив...

6
Федя Форточкин
68 / 82 / 33
Регистрация: 09.12.2012
Сообщений: 222
Записей в блоге: 3
18.04.2013, 22:49 2
Ванеек,
Java
1
pagelist.get(isc);
получает из ArrayList элемент стоящий на позиции isc
1
Ванеек
67 / 67 / 1
Регистрация: 21.12.2012
Сообщений: 458
19.04.2013, 18:10  [ТС] 3
Цитата Сообщение от Федя Форточкин Посмотреть сообщение
получает из ArrayList элемент стоящий на позиции isc
Спасибо,а как получить 10 элементов из листа?

Добавлено через 37 минут
Или может,мне получать десять элементов из String[] list,в цикле,а потом хоть в аррайлист,хоть куда,хоть на вывод,но меня волнует вопрос производительности,что быстрее взять String[] list вытащить десять элементов и вывести,или их еще и в аррай занести ,а потом вывести,если учитывать,что такая операция будет проводится постоянно

Добавлено через 13 минут
Или вот наоборот,все сделать в аррау ,а потом в String[] ,а там уже вывод десяти элементов,вот небольшой примерчик,но волнует вопрос быстроты сего алгоритма)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package WorkCyberForym;
 
import java.util.ArrayList;
 
public class Slist {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<String> lista = new ArrayList<String>();
        lista.add("hello");
        lista.add("Ivan");
        lista.add("KyKy");
 
        String[] list = lista.toArray(new String[lista.size()]);
        System.out.println(list[1]);
 
    }
 
}
Добавлено через 2 часа 20 минут
Так как вот такой код выдает у меня :
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
package WorkCyberForym;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
 
public class Slist {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        String listl[] = new File(
                "C:\\apache-tomcat-6.0.36\\webapps\\wasks\\WEB-INF\\linksearchbase\\")
                .list(new FilenameFilter() {
                    public boolean accept(File dir, String namelink) {
                        return namelink.endsWith(".html");
                    }
                });
 
        String myName = "Яндекс";
        BufferedReader brl = null;
        ArrayList<String> lista = new ArrayList<String>();
 
        for (int l = 0; l < listl.length; l++) {
            String namelink = listl[l];
            namelink = namelink.substring(0, namelink.lastIndexOf(".html"));
            File filel = new File(
                    "C:\\apache-tomcat-6.0.36\\webapps\\wasks\\WEB-INF\\linksearchbase\\"
                            + listl[l]);
            try {
                brl = new BufferedReader(new InputStreamReader(
                        new FileInputStream(filel), "UTF-8"));
 
                for (String word : myName.split(" ")) {
 
                    if (word.equals(myName)) {
 
                        String line;
 
                        try {
                            while ((line = brl.readLine()) != null) {
                                lista.add(line + "\n");
                                String[] list = lista.toArray(new String[lista
                                        .size()]);
                                for (int isc = 0; isc < 10; isc++) {
 
                                    System.out.println(list[isc]);
 
                                }
 
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
 
                    }
 
                }
 
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
 
        }
 
        String[] list = lista.toArray(new String[lista.size()]);
        System.out.println(list[0]);
 
    }
 
}
одну строку из файла,а если сделать вывод не из переменной,а подставить лист 0,то будет выведено много-много первых строчек файлов ,как исправить?

Добавлено через 1 час 17 минут
еще ошибку выдает
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at WorkCyberForym.Slist.main(Slist.java:54)

на 54 строке
Java
1
System.out.println(list[isc]);
0
tankomaz
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
440 / 439 / 100
Регистрация: 14.10.2012
Сообщений: 1,147
Записей в блоге: 9
19.04.2013, 18:19 4
Java
1
ArrayIndexOutOfBoundsException
выход за границы массива
1
Ванеек
67 / 67 / 1
Регистрация: 21.12.2012
Сообщений: 458
19.04.2013, 18:23  [ТС] 5
Вот String в массив,добавляет много строк,но я пытаюсь узнать размер массива мне пишет 1

Цитата Сообщение от tankomaz Посмотреть сообщение
выход за границы массива
Да это я понял уже
0
tankomaz
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
440 / 439 / 100
Регистрация: 14.10.2012
Сообщений: 1,147
Записей в блоге: 9
19.04.2013, 18:26 6
Java
1
2
3
4
5
                               for (int isc = 0; isc < 10; isc++) {
 
                                    System.out.println(list[isc]);
 
                                }
это как вы так уверенно написали меньше 10 тойсь вы гарантируете что элементов в list всегда больше?
1
Ванеек
67 / 67 / 1
Регистрация: 21.12.2012
Сообщений: 458
20.04.2013, 16:46  [ТС] 7
Цитата Сообщение от tankomaz Посмотреть сообщение
это как вы так уверенно написали меньше 10 тойсь вы гарантируете что элементов в list всегда больше?
их больше,в том-то и дело,что list.size выводит один элемент,но у меня там содержимое 20 файлов,может это потому,что стринг(содержащий все строки 20 файлов),когда в массив добавляется он же один,вот и выводит один,и ,если вывести первый элемент выводит 1 строку,а вот как это исправить?

Добавлено через 3 часа 20 минут
Может саму строку line,куда-нибудь добавить

Добавлено через 19 минут
Мне кажется это вообще нерешаемая задача,хотя,кто ее знает

Добавлено через 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class listtest {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        ArrayList<String> sizel = new ArrayList<String>();
        sizel = pagef();
 
        String[] ListS = sizel.toArray(new String[sizel.size()]);
        int spacerIndex = 0;
 
        for (int i = 0; i < 31; i++) {
            if (spacerIndex++ % 3 == 0) {
                System.out.println("<div class hop>");
            }
            System.out.println(ListS[i]);
            if (spacerIndex % 3 == 0) {
                System.out.println("</div>");
            }
        }
 
    }
 
    static ArrayList<String> pagef() {
        ArrayList<String> page = new ArrayList<String>();
        BufferedReader br = null;
        String s = null;
 
        String listl[] = new File("C:\\test\\")// apache-tomcat-6.0.36\\webapps\\wasks\\WEB-INF\\linksearchbase
                .list(new FilenameFilter() {
                    public boolean accept(File dir, String namelink) {
                        return namelink.endsWith(".txt");
                    }
                });
        try {
 
            for (int i = 0; i < listl.length; i++) {
                String namelink = listl[i];
                namelink = namelink.substring(0, namelink.lastIndexOf(".html"));
 
                File fileread = new File("C:\\test\\" + listl[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;
 
    }
}
Добавлено через 4 минуты
Java
1
2
3
4
5
6
 if (spacerIndex++ % 3 == 0) {
                System.out.println("<div class hop>");
            }
            System.out.println(ListS[i]);
            if (spacerIndex % 3 == 0) {
                System.out.println("</div>");
но есть проблемы,вывод сначала идет нормальный:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<div class hop>
<div></div>
<div></div>
<div></div>
</div>
<div class hop>
<div></div>
<div></div>
<div></div>
</div>
<div class hop>
<div></div>
<div></div>
<div></div>
</div>
...так шесть штук такиx и вдруг,на седьмом блоке:
<div class hop>
//откуда этот пробел взялся,подскажите пожалуйста)
<div></div>
<div></div>
</div>
<div class hop>
<div></div>
и все сбилось,главное нормально шло и какие-то пробелы

Добавлено через 36 минут
Главное еще в каждом файле по три строки (сделал вывод 30 строк),а выводятся 27 строк

Добавлено через 16 часов 41 минуту
Ну так как ,что за пробелы, и как их убрать?

Добавлено через 7 минут
Даже если я дивов с класами не ставлю у меня после пяти блоков:
<a></a>
<div></div>
<a></a>
<a></a>//2
<div></div>
<a></a>
<a></a>//3
<div></div>
<a></a>
<a></a>//6
<div></div>
<a></a>
<a></a>//7
<div></div>
<a></a>
Вот тут пробелы странные
<a></a>//8
<div></div>
<a></a>
Может ли это быть из-за файлов,я просто часть файлов скопировал в туже директорию,и как ни странно именно содержимое этих файлов,у меня с пробелами,что думаете?

Добавлено через 30 минут
Мне кажется дело еще в кодировке,может можно как-то сделать тут utf-8,а вот в нотепаде есть utf без BOM,можно такое сделать чтение в коде?
0
20.04.2013, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 16:46

Сравнение массивов и добавление новых элементов в массив
Добрый день! На данный момент столкнулся с двумя задачами, возникли...

Массив: Добавление элемента в динамический массив
Помогите пожалуйста разобраться с добавлением элементов в динамический массив....

Массив: Добавление N элементов в массив
Здравствуйте, помогите решить задание, в лабораторной ------- создать метод...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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