Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #38226

Re: Exit from loop?

Newsgroups comp.lang.java.programmer
Date 2018-04-04 12:44 -0700
References <6f19094e-c652-44e0-8a7d-fb3b7791c372@googlegroups.com> <pa38s0$35o$1@gioia.aioe.org>
Message-ID <cdaa9694-0267-45d2-80f4-5362ac858ceb@googlegroups.com> (permalink)
Subject Re: Exit from loop?
From Eric Douglas <e.d.programmer@gmail.com>

Show all headers | View raw


On Wednesday, April 4, 2018 at 3:26:15 PM UTC-4, Arne Vajhøj wrote:
> On 4/4/2018 3:05 PM, Eric Douglas wrote:
> > Does it cause any problems to exit from loop, or is it considered bad form?
> > 
> > ie can you do this?
> > 
> >       
> >       public static int randomMethod() {
> >            int i = 0;
> >            int tries = 0;
> >            for (int ctr = 0; ctr < 100; ctr++) {
> >                 i = java.util.concurrent.ThreadLocalRandom.current().nextInt(1, 10);
> >                 tries++;
> >                 if (i == 3) {
> >                      return tries;
> >                 }
> >            }
> >            return tries;
> >       }
> > 
> > or should you do this?
> >       
> >       public static int randomMethod() {
> >            int i = 0;
> >            int tries = 0;
> >            for (int ctr = 0; ctr < 100; ctr++) {
> >                 i = java.util.concurrent.ThreadLocalRandom.current().nextInt(1, 10);
> >                 tries++;
> >                 if (i == 3) {
> >                      break;
> >                 }
> >            }
> >            return tries;
> >       }
> > 
> > This is of course a simple sample, where the value getting assigned in the loop, and/or the value returned from the method are normally complex objects.
> 
> Between those two I would probably do the last, but
> I see no big problems with the first.
> 
> If I had the choice I would probably use a do while loop.
> 
> int ctr = 0;
> X o = new X();
> do {
>      o.something();
>      ctr++;
> } while(ctr < 100 && ThreadLocalRandom.current().nextInt(1, 10) != 3);
> 
> Arne

It's just a question of exiting from the middle of the structure, not necessarily which structure.

In my real world code it is a simple for loop with a counter.  It's calling an http request method which sometimes fails, sometimes just works if you try again, so the loop counter is just how many times you want to retry.  Then it calls a custom method on the return object to test for success to exit.  Within the loop after the return/break it logs the error condition.

There are coding preferences to always exit from a single point, but if the language doesn't care, sometimes it's easier to exit in the middle of the loop structure if there's nothing you need to do after the loop.  If it's bad for the language ie messing with the garbage collector, we should always exit properly with the break.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Exit from loop? Eric Douglas <e.d.programmer@gmail.com> - 2018-04-04 12:05 -0700
  Re: Exit from loop? Arne Vajhøj <arne@vajhoej.dk> - 2018-04-04 15:25 -0400
    Re: Exit from loop? Eric Douglas <e.d.programmer@gmail.com> - 2018-04-04 12:44 -0700
      Re: Exit from loop? Arne Vajhøj <arne@vajhoej.dk> - 2018-04-04 19:51 -0400
        Re: Exit from loop? Martin Gregorie <martin@mydomain.invalid> - 2018-04-05 10:46 +0000
      Re: Exit from loop? Daniele Futtorovic <da.futt.news@laposte.net> - 2018-04-06 18:19 +0200

csiph-web