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

Не могу разобраться с exception in thread "main" java.lang.nullpointerexception

13.06.2012, 21:19. Показов 5364. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заменить k-й символ слова на заданный символ. С использованием классов Word и Sentence.

Eclipse выдает

Exception in thread "main" java.lang.NullPointerException
at Text.TxtSplit(program.java:28)
at program.main(program.java:9)


Помогите разобраться, пожалуйста.

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
import java.util.*;
 
public class program
{
    public static void main(String[] args)
    {
        Text Txt = new Text();
                
        Txt.TxtSplit();
    }
}
 
class Text
{
    public Text() 
    {
        System.out.print("Sting: ");
        Scanner s = new Scanner(System.in);
        str = s.nextLine();
    }
    
    public void TxtSplit()
    {
        int i = 0;
        StringTokenizer st = new StringTokenizer(str, ".!?\n", true);
        while(st.hasMoreTokens())
        {
            Sentences[i] = new Sentence(st.nextToken());
            i++;
            Sentences[i].SntcSplit();
        }
    }
    
    private Sentence[] Sentences;
    private String str;
}
 
class Sentence
{
    public Sentence(String s) 
    {
        str = s; 
    }
    public void SntcSplit() 
    {
        int i = 0;
        StringTokenizer st = new StringTokenizer(str, " \n", true);
        while(st.hasMoreTokens())
        {
            Words[i] = new Word(st.nextToken());
            i++;
            Words[i].SymbolChange();
        }   
    }
    
    private Word[] Words;
    private String str;
}
 
class Word
{
    public Word(String s) 
    {
        str = s;
    }
    public void SymbolChange() 
    {
        int k = 3;
        if(k < str.length())
        {
            String temp;
            temp="";
            temp+=str.substring(0, k-1);
            temp+='@';
            temp+=str.substring(k,str.length());
 
            System.out.print(" "+temp);
        }
    }
        
    private String str;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2012, 21:19
Ответы с готовыми решениями:

Exception in thread "main" java.lang.NullPointerException at Main.main
Извините, перемещю в нужный раздел как только найду как это сделать Задание: Создать масив объектов класса, определить значение полей...

Erorr Exception in thread "main" java.lang.NullPointerException
Exception in thread &quot;main&quot; java.lang.NullPointerException at com.company.Main.rtoi(Main.java:157) at...

Ошибка Exception in thread "main" java.lang.NullPointerException
Полный текст консоли: Input a number: Exception in thread &quot;main&quot; java.lang.NullPointerException at...

6
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
13.06.2012, 21:30
Вы используете массив Sentence[] Sentences, не инициализировав его. Выделите память под него.
Или еще лучше поменяйте сначала поменяйте на ArrayList<Sentence> Sentences, так как вам неизвестно заранее количество элементов.
1
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 4
13.06.2012, 22:18  [ТС]
Мгм. Так?

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
class Text
{
    public Text() 
    {
        System.out.print("Sting: ");
        Scanner s = new Scanner(System.in);
        str = s.nextLine();
    }
    
    public void TxtSplit()
    {
        int i = 0;
        StringTokenizer st = new StringTokenizer(str, ".!?\n", true);
        while(st.hasMoreTokens())
        {
            Sentences[i] = new Sentence(st.nextToken());
            i++;
            Sentences[i].SntcSplit();
        }
    }
    
    ArrayList<Sentence> Sentences;
    private String str;
}
Теперь выдает
The type of the expression must be an array type but it resolved to ArrayList<Sentence>
The type of the expression must be an array type but it resolved to ArrayList<Sentence>

Что я делаю не так?

Добавлено через 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
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
class Text
{
    public Text() 
    {
        System.out.print("Sting: ");
        Scanner s = new Scanner(System.in);
        str = s.nextLine();
    }
    
    public void TxtSplit()
    {
        int i = 0;
        Sentence[] Sentences;
        Sentences = new Sentence[10];
        StringTokenizer st = new StringTokenizer(str, ".!?\n", true);
        while(st.hasMoreTokens())
        {
            Sentences[i] = new Sentence(st.nextToken());
            Sentences[i].SntcSplit();
            i++;
        }
    }
    
    private String str;
}
 
class Sentence
{
    public Sentence(String s) 
    {
        str = s; 
    }
    public void SntcSplit() 
    {
        int i = 0;
        Word[] Words;
        Words = new Word[10];
        StringTokenizer st = new StringTokenizer(str, " \n", true);
        while(st.hasMoreTokens())
        {
            Words[i] = new Word(st.nextToken());
            Words[i].SymbolChange();
            i++;
        }   
    }
    
    private String str;
}
 
class Word
{
    public Word(String s) 
    {
        str = s;
    }
    public void SymbolChange() 
    {
        int k = 3;
        if(k < str.length())
        {
            String temp;
            temp="";
            temp+=str.substring(0, k-1);
            temp+='@';
            temp+=str.substring(k,str.length());
 
            System.out.print(" "+temp);
        }
    }
        
    private String str;
}
Добавлено через 20 минут
Всё заработало. Спасибо огромное!
0
 Аватар для MILAN
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
13.06.2012, 22:21
У меня вроде работает
ввожу - helloworld
получаю - he@loworld
0
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 4
13.06.2012, 23:00  [ТС]
Это я дурак вводил bla bla bla и недоумевал почему третий символ не меняется Всё дело в k <= str.length()

Добавлено через 7 минут
Мой окончательный вариант, если вдруг кому пригодится.

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
import java.util.*;
 
public class program
{
    public static void main(String[] args)
    {
        int k;
        String ss;
        String str;
        Scanner scan1 = new Scanner(System.in);
        Scanner scan2 = new Scanner(System.in);
        Scanner scan3 = new Scanner(System.in);
        
        System.out.print("Enter k: ");
        k = scan1.nextInt();
                
        System.out.print("Enter symbol: ");
        ss = scan2.nextLine();
        
        System.out.print("String: ");
            str = scan3.nextLine();
        
        Text Txt = new Text(str, k, ss);
        Txt.TxtSplit();
    }
}
 
class Text
{
    public Text(String s, int num, String ss) 
    {
        sym = ss;
        k = num;
        str = s;    
    }
    
    public void TxtSplit()
    {
        int i = 0;
        Sentence[] Sentences;
        Sentences = new Sentence[10];
        StringTokenizer st = new StringTokenizer(str, ".");
        while(st.hasMoreTokens())
        {
            Sentences[i] = new Sentence(st.nextToken(), k, sym);
            Sentences[i].SntcSplit();
            i++;
        }
    }
    
    private String str;
    private String sym;
    private int k;
}
 
class Sentence
{
    public Sentence(String s, int num, String ss) 
    {
        str = s;
        sym = ss;
        k = num;
    }
    public void SntcSplit() 
    {
        int i = 0;
        Word[] Words;
        Words = new Word[10];
        StringTokenizer st = new StringTokenizer(str, " ");
        while(st.hasMoreTokens())
        {
            Words[i] = new Word(st.nextToken(), k, sym);
            Words[i].SymbolChange();
            i++;
        }   
    }
    
    private String str;
    private String sym;
    private int k;
}
 
class Word
{
    public Word(String s, int num, String ss) 
    {
        str = s;
        sym = ss;
        k = num;
    }
    public void SymbolChange() 
    {
            if(k <= str.length())
            {
            String temp;
            temp="";
            temp+=str.substring(0, k-1);
            temp+=sym;
            temp+=str.substring(k,str.length());
    
                System.out.print(temp+" ");
            }
            else
            {
                System.out.print(str+" ");
            }
    }
        
    private String str;
    private String sym;
    private int k;
}
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
14.06.2012, 07:37
А теперь попробуйте ввести больше 10 слов, например 15.
0
0 / 0 / 0
Регистрация: 13.06.2012
Сообщений: 4
14.06.2012, 08:57  [ТС]
turbanoff, я прекрасно осознаю последствия, но в данном случае эта проблема непринципиальна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.06.2012, 08:57
Помогаю со студенческими работами здесь

Ошибка Exception in thread "main" java.lang.NullPointerException
Всем привет, я только начал изучать Java и мне дали задание написать программу копирования файла тремя способами. В ходе выполнения...

Ошибка Exception in thread "main" java.lang.NullPointerException
Добрый день! Программа запускается, но выдает ошибки: MSI GeForce GTX 1070 Gaming Z Exception in thread &quot;main&quot;...

Exception in thread "main" java.Lang.NullPointerException
Укажите ошибочку и как ее исправить: Exception in thread &quot;main&quot; java.lang.NullPointerException at lab8info.main(lab8info.java:26) ...

Exception in thread "main" java.lang.NullPointerException
Возможно, мой вопрос реально очень тупой, но всё равно помогите!:cry: Вот код: import java.awt.Graphics; public class Game { ...

Exception in thread "main" java.lang.NullPointerException
public class Normalestrategie implements Strategien { protected Spielregeln Spielregeln; protected Spielfeld spielfeld; public...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
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 считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru