Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #38021
| From | Arne Vajhøj <arne@vajhoej.dk> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Can't use block of statements as 'incrementer' in for loop? |
| Date | 2018-02-14 11:13 -0500 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <p61n7e$123l$1@gioia.aioe.org> (permalink) |
| References | <p61mgq$10r6$1@gioia.aioe.org> |
On 2/14/2018 11:01 AM, Robert Spanjaard wrote:
> When you create a for loop, you provide an initialisation statement, a
> condition, and a continue statement. Usually this continue statement is
> an incrementer or decrementer, but basically it can be any statement.
>
> For instance, if you change Oracle's own tutorial example (*1)...
>
> class ForDemo {
> public static void main(String[] args){
> for(int i=1; i<11; i++){
> System.out.println("Count is: " + i);
> }
> }
> }
>
> ...with this...
>
> class ForDemo {
> public static void main(String[] args){
> for(int i=1; i<11; System.out.println("haha")){
> System.out.println("Count is: " + i);
> i++;
> }
> }
> }
>
> ... it still works.
>
> Now, the same tutorial says "A block is a group of zero or more
> statements between balanced braces and can be used anywhere a single
> statement is allowed." (*2)
>
> But when I replace the single haha-printing statement with any kind of
> block, the compiler produces an error message:
>
> ForDemo.java:3: error: illegal start of expression
> for (int i=1; i<11; { i++; i++; }) {
> ^
>
> I must say I tried this construction purely out of curiosity,
> remembering Oracle's statement about blocks being allowed anywhere
> instead of a single statement, so I don't have a practical use case for
> it. But still I'd like to know why it doesn't work. So, can anyone of
> you shed some light on this issue? Google search doesn't really help in
> this case.
I think the problem is that it is not a general statement.
JLS 14.4.1 says that it is a comma separated list of StatementExpression.
JLS 14.8 says that StatementExpression is one of:
Assignment
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
Arne
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Can't use block of statements as 'incrementer' in for loop? Robert Spanjaard <spamtrap@arumes.com> - 2018-02-14 17:01 +0100
Re: Can't use block of statements as 'incrementer' in for loop? Arne Vajhøj <arne@vajhoej.dk> - 2018-02-14 11:13 -0500
Re: Can't use block of statements as 'incrementer' in for loop? Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-02-14 11:34 -0500
Re: Can't use block of statements as 'incrementer' in for loop? Eric Douglas <e.d.programmer@gmail.com> - 2018-02-14 10:57 -0800
Re: Can't use block of statements as 'incrementer' in for loop? Robert Spanjaard <spamtrap@arumes.com> - 2018-02-15 12:05 +0100
Re: Can't use block of statements as 'incrementer' in for loop? Eric Douglas <e.d.programmer@gmail.com> - 2018-02-15 04:49 -0800
csiph-web