Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58

Помогите исправить ошибку в коде

14.05.2012, 11:37. Показов 1492. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать объект с данными, содержащими сведения о группе людей (фамилия, имя, отчество, год рождения). Определить, сколько человек имеют одинаковые инициалы.
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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication5;
 
/**
 *
 * @author Iseult
 */
public class JavaApplication5 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int k, i, j;
        char ch, ch1, ch2;
        String spr;
        String[] p;
        p = new String[8];
        NewClass[] pasList;
        pasList = new NewClass[8];
        String family[] = {"Петров", "Попов", "Полушкин", "Купалов", "Овушин"};
        String name[] = {"Василий", "Вадим", "Виктор", "Владислав", "Вячеслав"};
        String otch[] = {"Алексеевич", "Александрович", "Альбертович", "Игоревич", "Станиславович"};
        for (i = 0; i < pasList.length; i++) {
            pasList[i] = new NewClass();
            pasList[i].setFamily(family[(int) Math.round(Math.random() * 4)]);
            pasList[i].setName(name[(int) (Math.round(Math.random() * 4))]);
            pasList[i].setOtch(otch[(int) (Math.round(Math.random() * 4))]);
            pasList[i].setGod_birth((int) (Math.random() * 1980));
            System.out.println(i + 1 + ". Фамилия: " + pasList[i].getFamily() + "|" + " Имя: " + pasList[i].getName() + "|" + " Отчество: " + pasList[i].getOtch() + "|" + "Год рождения: " + pasList[i].getGod_birth());
        }
 
 
        k = 0;
        for (i = 0; i < pasList.length; i++) {
            ch = pasList[i].getFamily().charAt(0);
            ch1 = pasList[i].getName().charAt(0);
            ch2 = pasList[i].getOtch().charAt(0);
 
            spr = String.valueOf(ch) + String.valueOf(ch1) + String.valueOf(ch2);
                p[i] = spr;
                System.out.println(p[i]  );
                if (p[i].equals(p[i + 1])) {
                    k = k++;
                }
            }
        
        System.out.println("k =" + k);
    }
}
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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package javaapplication5;
/**
 *
 * @author Iseult
 */
 
public class NewClass {
private String family;
private String name;
private String otch;
private int god_birth;
 
public NewClass() {
family = "";
name = "";
otch = "";
god_birth = 0;
}
 
public String getFamily() {
return family;
}
 
public String getName() {
return name;
} 
public String getOtch() {
return otch;
} 
 
public int getGod_birth() {
return god_birth;
} 
 
public void setFamily(String pFamily) {
family = pFamily;
}
 
 
public void setName(String pName) {
name = pName;
}
 
public void setOtch(String pOtch) {
otch = pOtch;
}
 
public void setGod_birth(int pGod_birth) {
god_birth = pGod_birth;
}
}
Выдает ошибку в строке, где сравниваются элементы строкового массива.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2012, 11:37
Ответы с готовыми решениями:

Помогите исправить ошибку в коде
Вот код: package mid_2_5; import java.util.Locale; import java.util.ResourceBundle; public class mid_2_5 { public...

Исправить ошибку в коде
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { int array = new int ;...

Исправить ошибку в приведенном коде и объяснить ее происхождение
Ругается в этой строчке: Item one = iter.next(); import java.util.ArrayList; import java.util.Iterator; public class...

17
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
14.05.2012, 12:40
А чему равно i, и p[i+1] в момент когда ошибка произошла?
0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
14.05.2012, 13:09  [ТС]
Там ошибка при выполнении идет, курсор показывает на эту строчку и программа не выполняется. только выводятся инициалы, но не считается сколько одинаковых.
0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
14.05.2012, 13:14  [ТС]
Вот так выдает.
Миниатюры
Помогите исправить ошибку в коде  
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
14.05.2012, 13:50
Вы так и не ответили на мой вопрос.
Уточню, если вы не поняли. Ошибка происходит на последней итерации цикла, когда i равно pasList.length-1.
Чему в этом случае равно p[i+1] ?
0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
14.05.2012, 14:06  [ТС]
т.е. i+1 будет равняться pasList.length и вот этот подсчет выйдет за границу допустимых значений?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
14.05.2012, 14:17
Цитата Сообщение от Iseult Посмотреть сообщение
т.е. i+1 будет равняться pasList.length и вот этот подсчет выйдет за границу допустимых значений?
Да, так и есть. Вам надо снизить на 1 верхнюю границу цикла.
0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
14.05.2012, 14:35  [ТС]
мне можно оставить: for (i = 0; i < pasList.length; i++) и вместо pasList.length написать "pasList.length-1" ?
или еще один цикл сделать, когда сравнивать элементы? Не могу никак понять.
0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
18.05.2012, 20:24  [ТС]
Сделала вот так, но программа выдает неверный ответ.
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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication5;
 
/**
 *
 * @author Iseult
 */
public class JavaApplication5 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int k, i, j;
        char ch, ch1, ch2;
        String spr;
        String[] p;
        p = new String[8];
        NewClass[] pasList;
        pasList = new NewClass[8];
        
        String family[] = {"Петров", "Попов", "Полушкин", "Купалов", "Овушин"};
        String name[] = {"Василий", "Вадим", "Виктор", "Владислав", "Вячеслав"};
        String otch[] = {"Алексеевич", "Александрович", "Владиславович", "Игоревич", "Кириллович"};
        for (i = 0; i < pasList.length; i++) {
            pasList[i] = new NewClass();
            pasList[i].setFamily(family[(int) Math.round(Math.random() * 4)]);
            pasList[i].setName(name[(int) (Math.round(Math.random() * 4))]);
            pasList[i].setOtch(otch[(int) (Math.round(Math.random() * 4))]);
            pasList[i].setGod_birth((int) (Math.random() * 1980));
            System.out.println(i + 1 + ". Фамилия: " + pasList[i].getFamily() + "|" + " Имя: " + pasList[i].getName() + "|" + " Отчество: " + pasList[i].getOtch() + "|" + "Год рождения: " + pasList[i].getGod_birth());
        }
 
 
        
        for (i = 0; i < pasList.length; i++) {
            ch = pasList[i].getFamily().charAt(0);
            ch1 = pasList[i].getName().charAt(0);
            ch2 = pasList[i].getOtch().charAt(0);
 
            spr = String.valueOf(ch) + String.valueOf(ch1) + String.valueOf(ch2);
 
            p[i] = spr;
            System.out.println(p[i]);
        }
        
        k = 0;
        for (i = 0; i < p.length-1; i++) {
            if (p[i].equals(p[i + 1])) {
                k = k++;
            }
        }
        
            System.out.println("k = " + k);
    }
}
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
19.05.2012, 02:16
Ваша ошибка главная в том, что массив p[] определяется только в пределе i, а не в i+1. Вот тут

Java
1
2
3
 spr = String.valueOf(ch) + String.valueOf(ch1) + String.valueOf(ch2);
 
            p[i] = spr;
И лучше использовать конструктор класса.

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
package javaapplication5;
/**
 *
 * @author Iseult
 */
 
public class NewClass {
private String family;
private String name;
private String otch;
private int god_birth;
 
public NewClass(String family, String name, String otch, int god_birth) {
this.family = family;
this.name = name;
this.otch = otch;
this.god_birth = god_birth;
}
 
public String getFamily() {
return family;
}
 
public String getName() {
return name;
} 
public String getOtch() {
return otch;
} 
 
public int getGod_birth() {
return god_birth;
} 
 
public void setFamily(String pFamily) {
family = pFamily;
}
 
 
public void setName(String pName) {
name = pName;
}
 
public void setOtch(String pOtch) {
otch = pOtch;
}
 
public void setGod_birth(int pGod_birth) {
god_birth = pGod_birth;
}
}


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
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication5;
 
/**
 *
 * @author Iseult
 */
public class JavaApplication5 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int k = 0, i, j;
        char ch, ch1, ch2;
        String spr;
 
        String[] p = new String[8];
        NewClass[] pasList = new NewClass[8];
 
        String family[] = {"Петров", "Попов", "Полушкин", "Купалов", "Овушин"};
        String name[] = {"Василий", "Вадим", "Виктор", "Владислав", "Вячеслав"};
        String otch[] = {"Алексеевич", "Александрович", "Альбертович", "Игоревич", "Станиславович"};
 
        for (i = 0; i < pasList.length; i++) {
            pasList[i] = new NewClass(family[(int) Math.random() * 5], name[(int) (Math.random() * 5)], otch[(int) (Math.random() * 5)], (int) (Math.random() * 1980));
            ch = pasList[i].getFamily().charAt(0);
            ch1 = pasList[i].getName().charAt(0);
            ch2 = pasList[i].getOtch().charAt(0);
            p[i] = String.valueOf(ch) + String.valueOf(ch1) + String.valueOf(ch2);
            System.out.println(i + 1 + ". Фамилия: " + pasList[i].getFamily() + "|" + " Имя: " + pasList[i].getName() + "|" + " Отчество: " + pasList[i].getOtch() + "|" + "Год рождения: " + pasList[i].getGod_birth());
        }
 
        for (i = 0; i < pasList.length - 1; i++) {
            for (j = i+1;j < pasList.length ; j++) {
                System.out.println(p[i]);
                if (p[i].equalsIgnoreCase(p[j])){
                    k +=1 ;
                }
            }
 
        }
 
        System.out.println("k =" + k);
    }
}
Добавлено через 35 секунд

Не по теме:

Только проверьте. Я не совсем трезв...:-[

0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
19.05.2012, 12:02  [ТС]
Во-первых, на эту строчку ругалась:
pasList[i] = new NewClass(family[(int) Math.random() * 5], name[(int) (Math.random() * 5)], otch[(int) (Math.random() * 5)], (int) (Math.random() * 1980));

во-вторых, все равно не считает нормально количество (k) (при подставлении моего заполнения массива, на него не ругается);

В третьих, у меня появился вопрос, как сделать так, чтобы программа выводила число одних одно-инициальников (допустим ПВА) и число других (допустим КВА), если и тех и тех по двое-трое получится?
0
 Аватар для exiqa
487 / 333 / 71
Регистрация: 24.12.2011
Сообщений: 591
19.05.2012, 15:47
можно как то так

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void main(String[] args) {
        
        String[] names = { "ПВА", "ПВО", "ПВА", "ПВЕ", "КНЕ", "ПВА", "ПВО" };
        
        Arrays.sort(names);
    
        int k = 1;
        String n;
        for (int i = 0; i < names.length - 1; i++) {
            if (!names[i].equals(names[i + 1])) {
                continue;
            }
            n = names[i];
            while (i < names.length - 1 && n.equals(names[i + 1]) ) {
                k++;
                i++;
            }
            System.out.println(n + ", " + k);
            k = 1;
        }
}
ПВА, 3
ПВО, 2
0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
20.05.2012, 15:54  [ТС]
Последнее конечно меня радует, но у меня инициалы не задаются, а из имен получаются, мне ваш алгоритм полностью переделывать... Если можно, помогайте по конкретной программе.... Заранее спасибо.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
20.05.2012, 21:24
СПВПФ в разгаре
1
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
21.05.2012, 14:01  [ТС]
А вдруг я мужыыык на самом деле
0
 Аватар для exiqa
487 / 333 / 71
Регистрация: 24.12.2011
Сообщений: 591
21.05.2012, 14:43
я, конечно, не претендую на эффективность алгоритма, но зачем
Цитата Сообщение от Iseult Посмотреть сообщение
алгоритм полностью переделывать
если
Цитата Сообщение от Iseult Посмотреть сообщение
у меня инициалы
Цитата Сообщение от Iseult Посмотреть сообщение
из имен получаются
? Сами сложить 1 + 1 сможете?

Не по теме:

блондинки такие блондинки

0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
22.05.2012, 05:54
Цитата Сообщение от Iseult Посмотреть сообщение
А вдруг я мужыыык на самом деле
Тынц.
0
 Аватар для Iseult
0 / 0 / 1
Регистрация: 28.10.2011
Сообщений: 58
23.05.2012, 00:36  [ТС]
exiqa, оскорбления, конечно же, не заставили себя ждать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.05.2012, 00:36
Помогаю со студенческими работами здесь

Помогите исправить ошибку
Подскажите пожалуйста: задание по программке на java. Написала вот так: import java.math.BigDecimal; import...

Помогите найти ошибку в коде
if(i1!=i3) return; if(i2!=i4) return; doubled1=new double; Double...

помогите исправить ошибку в компиле
помогите исправить ошыбку вот 2 класа они находятся в разных документах и их название совпадают с названия ми класов. тот что меньше...

Помогите исправить ошибку: java.lang.ArrayIndexOutOfBoundsException
Мне 14,я из Украини так что простите за ошибки .Вот в чем проблема я пол инета облазил и не нашол как ето решить помогите))) ...

Исправить ошибки в коде
Привет. Нужна помощь, требуется исправить ошибки. Могу выслать проект на e-mail. Проект не большой.


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru