|
JAVA Micro Edition Низкоуровневое программирование мобильных телефонов. |
14.08.2011, 14:58
|
#1
|
ПроЭктировщик
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений (для 17 пользователей)
|
Инициализация переменных в цикле for.
как я понял из этой книжки в цикле for, в первом списке выражений можно задавать несколько выражений через запятую. Но как оказалось после первой компиляции на практике они должны быть( ) одного типа.
В общем есть такой цикл:
for (int i, boolean toCountScale; i < num.length(); i++) { }
при его компиляции вылазят ошибки:
SNumber.java:62: error: <identifier> expected
for (int i = 0, boolean toCountScale = false; i < num.length(); i++) {
___________^
SNumber.java:62: error: not a statement
for (int i = 0, boolean toCountScale = false; i < num.length(); i++) {
______________________________________^
SNumber.java:62: error: ')' expected
for (int i = 0, boolean toCountScale = false; i < num.length(); i++) {
__________________________________________________ ^
SNumber.java:62: error: ';' expected
for (int i = 0, boolean toCountScale = false; i < num.length(); i++) {
__________________________________________________ ____^
|
|
(Offline)
|
|
14.08.2011, 19:14
|
#2
|
ПроЭктировщик
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений (для 17 пользователей)
|
Ответ: Инициализация переменных в цикле for.
Можно ли как-то эти ошибки обойти?
|
(Offline)
|
|
14.08.2011, 19:27
|
#3
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Инициализация переменных в цикле for.
for (int i = 0; i < num.length(); i++) { boolean toCountScale = false; }
не?
|
(Offline)
|
|
14.08.2011, 19:39
|
#4
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Инициализация переменных в цикле for.
for (int i = 0; i < num.length(); i++) { boolean toCountScale = false; }
Что-то мне подсказывает что внутри цикла помногу раз инициализировать одну и ту же переменную нехорошо.
Я делаю так:
{ boolean toCountScale = false; for (int i = 0; i < num.length(); i++) { } }
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.08.2011, 23:42
|
#5
|
ПроЭктировщик
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений (для 17 пользователей)
|
Ответ: Инициализация переменных в цикле for.
А что официально нужно заносить во все поля?
первое поле - это один оператор для создания ссылок.
второе - логическое выражение.
а что тогда третье?
|
(Offline)
|
|
15.08.2011, 02:24
|
#6
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Инициализация переменных в цикле for.
Сообщение от Den
for (int i = 0; i < num.length(); i++) { boolean toCountScale = false; }
не?
|
переменная иницализируется каждый проход цикла, автору нафигнада..
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.08.2011, 11:49
|
#7
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Инициализация переменных в цикле for.
третье, что делать в конце каждого шага.
|
(Offline)
|
|
15.08.2011, 14:37
|
#8
|
ПроЭктировщик
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений (для 17 пользователей)
|
Ответ: Инициализация переменных в цикле for.
я понял, что третье поле выполняется в конце каждогопрохода цикла, но что там нужно писать?
В общем компилятор ругается на такую конструкцию:
for (;; i++, j * 10);
кто-нибудь может обьяснить причину этого? мне не нужны решения, а лишь голая и не прикрытая теория. Дайте хотя бы ссылку на oracle где описываются циклы.
|
(Offline)
|
|
15.08.2011, 15:22
|
#9
|
Бывалый
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений (для 450 пользователей)
|
Ответ: Инициализация переменных в цикле for.
Ну то что выполнится в конце каждого цикла) for(int i=0; i <10; i = i + 1)
или i++ или i = i * 2... и т.д.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.08.2011, 21:36
|
#10
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Инициализация переменных в цикле for.
третье поле выполняется в конце каждогопрохода цикла, но что там нужно писать?
|
Кроме третьего поля есть место между скобками, где подробно пишется что делать каждый проход цикла
For(int i=1;i<10
{i++, j*10}
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
17.08.2011, 00:14
|
#11
|
ПроЭктировщик
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений (для 17 пользователей)
|
Ответ: Инициализация переменных в цикле for.
2Igor
согласитесь легче написать
for (int i = 1; i < 10; i++, j = j * 10);
чем
For(int i=1;i<10;)
{i++, j*10}
|
|
(Offline)
|
|
19.08.2011, 13:44
|
#12
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Инициализация переменных в цикле for.
но ты же не собираешься всё тело цикла писать внутри скобок через запятую?
Одно место есть т.к. обычно существует один счётчик цикла, который не всегда имеет прямое отношение к тому что делается внутри.
Рассуждение номер 2 - команды разделяются точкой с запятой, но внутри цикла нельзя поставить лишней ";" по понятным причинам, а ставить между командами запятые тоже нехорошо
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
|
(Offline)
|
|
24.02.2012, 10:52
|
#13
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Инициализация переменных в цикле for.
Сообщение от Ksanatos
В общем компилятор ругается на такую конструкцию:
for (;; i++, j * 10);
кто-нибудь может обьяснить причину этого? мне не нужны решения, а лишь голая и не прикрытая теория.
|
for без среднего параметра работать не может, т.к. ему необходимо условие завершения цикла. Если второй параметр указать и переменные i, j объявлены выше цикла, причём с указанием значений, например нулю равные, то будет норм работать.
Сообщение от Igor
Рассуждение номер 2 - команды разделяются точкой с запятой, но внутри цикла нельзя поставить лишней ";" по понятным причинам, а ставить между командами запятые тоже нехорошо
|
хорошо, когда требуется
Ещё: вместо i++ лучше использовать ++i - префиксное плюсование.
Последний раз редактировалось Жека, 24.02.2012 в 10:54.
Причина: пс
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:37.
|