Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при инициализации 
V
    Опции темы
Samotnik
Дата 18.6.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Почему в этом коде
Код

import java.util.*;
 class RefTest 
{ 

public static void main( String[] args ) 
  {
     int count ;
    String msg = "To be or not to be";
    System.out.println(msg);  
    StringTokenizer st = new StringTokenizer(msg, " ");    
    
        while(st.hasMoreTokens() )
        {
            count = st.countTokens();
            count++;   
        }
            System.out.println("Kolichestvo slov is " + count);                        
                        
}
}

в строке
Код

System.out.println("Kolichestvo slov is " + count);

а конкретно на count    Выдается ошибка  
D:\RefTest\RefTest.java:17: variable count might not have been initialized
            System.out.println("Kolichestvo slov is " + count);                        
 smile 
PM MAIL   Вверх
RebornCrusader
Дата 18.6.2007, 03:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 18.1.2007
Где: Владивосток

Репутация: 2
Всего: 6



Потому что тело цикла с предусловием может ни разу не выполниться, и тогда переменная count не будет инициализирована.

Можно вопрос? Что вообще делает эта программа? По мне так воду в ступе толчёт. 

Я бы сделал так:
Код

import java.util.*;
public class RefTest {
    public static void main(String[] args) {
        String msg = "To be or not to be";
        System.out.println(msg);
        StringTokenizer st = new StringTokenizer(msg, " ");

        int count = st.countTokens();
        System.out.println("Words quantity is " + count);
    }
}

--------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier"
PM   Вверх
ekr
Дата 18.6.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 3
Всего: 19



Цитата(Samotnik @  18.6.2007,  01:04 Найти цитируемый пост)
variable count might not have been initialized

синтаксис java требует, чтобы локальные переменные (т.е. объявленные в методе) перед первым считыванием были инициализированы.

а дальше см. пост RebornCrusader - инициализация проводится в цикле с предусловием, т.е. может не выполниться.


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
nornad
Дата 18.6.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(ekr @  18.6.2007,  12:00 Найти цитируемый пост)
синтаксис java требует

Вообще-то, синтаксис этого не требует. И компилятор не прерывает компиляцию (на стандартных опциях), а лишь предупреждает, что переменная может быть не инициализирована, что приведёт к падению при выполнении.
, 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 18.6.2007, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



2 all 
Пасибо, все понял!   smile 
 smile 
PM MAIL   Вверх
ekr
Дата 18.6.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

Репутация: 3
Всего: 19



не хотелось бы поднимать мега-спор )))) но:
Цитата(nornad @  18.6.2007,  11:17 Найти цитируемый пост)
Вообще-то, синтаксис этого не требует.

именно требует. во всяком случае, 1.4.

но, на самом деле, шут с ним )


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
nornad
Дата 18.6.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



 smile 
Цитата(ekr @  18.6.2007,  20:37 Найти цитируемый пост)
но, на самом деле, шут с ним

Согласен smile
Маленькая просьба - если не трудно, кинь в приват ссылку на соответствующее место в спецификации 1.4 (ну, или хотя бы раздел - спека где-то валяется) - буду эрудированность повышать. Просто, по логике - синтаксис такого требовать не должен, но жизнь и логика мало совмещаются.  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.