forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JAVA Micro Edition (http://forum.boolean.name/forumdisplay.php?f=52)
-   -   Инициализация переменных в цикле for. (http://forum.boolean.name/showthread.php?t=15290)

Ksanatos 14.08.2011 14:58

Инициализация переменных в цикле for.
 
как я понял из этой книжки в цикле for, в первом списке выражений можно задавать несколько выражений через запятую. Но как оказалось после первой компиляции на практике они должны быть( :dontknow: ) одного типа.
В общем есть такой цикл:
PHP код:

for (int iboolean toCountScalenum.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++) {
__________________________________________________ ____^

Ksanatos 14.08.2011 19:14

Ответ: Инициализация переменных в цикле for.
 
Можно ли как-то эти ошибки обойти?

den 14.08.2011 19:27

Ответ: Инициализация переменных в цикле for.
 
PHP код:

for (int i 0num.length(); i++) {
    
boolean toCountScale false;


не?

Igor 14.08.2011 19:39

Ответ: Инициализация переменных в цикле for.
 
PHP код:

for (int i 0num.length(); i++) { 
    
boolean toCountScale false


Что-то мне подсказывает что внутри цикла помногу раз инициализировать одну и ту же переменную нехорошо.
Я делаю так:
PHP код:

{
boolean toCountScale false
for (
int i 0num.length(); i++) { 
     } 



Ksanatos 14.08.2011 23:42

Ответ: Инициализация переменных в цикле for.
 
А что официально нужно заносить во все поля?
первое поле - это один оператор для создания ссылок.
второе - логическое выражение.
а что тогда третье?

IGR 15.08.2011 02:24

Ответ: Инициализация переменных в цикле for.
 
Цитата:

Сообщение от Den (Сообщение 198982)
PHP код:

for (int i 0num.length(); i++) {
    
boolean toCountScale false;


не?

переменная иницализируется каждый проход цикла, автору нафигнада..

den 15.08.2011 11:49

Ответ: Инициализация переменных в цикле for.
 
Цитата:

а что тогда третье?
третье, что делать в конце каждого шага.

Ksanatos 15.08.2011 14:37

Ответ: Инициализация переменных в цикле for.
 
я понял, что третье поле выполняется в конце каждогопрохода цикла, но что там нужно писать?
В общем компилятор ругается на такую конструкцию:
for (;; i++, j * 10);
кто-нибудь может обьяснить причину этого? мне не нужны решения, а лишь голая и не прикрытая теория. Дайте хотя бы ссылку на oracle где описываются циклы.

h1dd3n 15.08.2011 15:22

Ответ: Инициализация переменных в цикле for.
 
Ну то что выполнится в конце каждого цикла) for(int i=0; i <10; i = i + 1)
или i++ или i = i * 2... и т.д.

Igor 16.08.2011 21:36

Ответ: Инициализация переменных в цикле for.
 
Цитата:

третье поле выполняется в конце каждогопрохода цикла, но что там нужно писать?
Кроме третьего поля есть место между скобками, где подробно пишется что делать каждый проход цикла
For(int i=1;i<10;)
{i++, j*10}

Ksanatos 17.08.2011 00:14

Ответ: Инициализация переменных в цикле for.
 
2Igor
согласитесь легче написать
Код:

for (int i = 1; i < 10; i++, j = j * 10);
чем
Цитата:

Код:

For(int i=1;i<10;)
{i++, j*10}



Igor 19.08.2011 13:44

Ответ: Инициализация переменных в цикле for.
 
но ты же не собираешься всё тело цикла писать внутри скобок через запятую?
Одно место есть т.к. обычно существует один счётчик цикла, который не всегда имеет прямое отношение к тому что делается внутри.
Рассуждение номер 2 - команды разделяются точкой с запятой, но внутри цикла нельзя поставить лишней ";" по понятным причинам, а ставить между командами запятые тоже нехорошо

Жека 24.02.2012 10:52

Ответ: Инициализация переменных в цикле for.
 
Цитата:

Сообщение от Ksanatos (Сообщение 199021)
В общем компилятор ругается на такую конструкцию:
for (;; i++, j * 10);
кто-нибудь может обьяснить причину этого? мне не нужны решения, а лишь голая и не прикрытая теория.

for без среднего параметра работать не может, т.к. ему необходимо условие завершения цикла. Если второй параметр указать и переменные i, j объявлены выше цикла, причём с указанием значений, например нулю равные, то будет норм работать.

Цитата:

Сообщение от Igor (Сообщение 199396)
Рассуждение номер 2 - команды разделяются точкой с запятой, но внутри цикла нельзя поставить лишней ";" по понятным причинам, а ставить между командами запятые тоже нехорошо

хорошо, когда требуется:)

Ещё: вместо i++ лучше использовать ++i - префиксное плюсование.


Часовой пояс GMT +4, время: 12:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot