Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1

    aiuto istruzione "break "

    codice:
    /* * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package tabella2senzaetichetta;
    
    
    
    
    import java.io.*;
    
    
    public class Tabella2senzaetichetta {
        public static void main( String[] args ) throws Exception {        
            int Contatore = 0;
            
            //Variabili di input
            int valoreMax;
            
            //Acquisisco i dati di input
            System.out.println("Fino a che numero devo arrivare? ");
            BufferedReader input = new BufferedReader(new InputStreamReader( System.in ) );
            String line = input.readLine();
            valoreMax = Integer.parseInt( line );
        
            //Ciclo per le righe
    while( true ) 
            {
                System.out.print( "| " );
                //Ciclo per le colonne
                for( int i = 1; i <= 5; i++ )
                {
                    //Stampa il valore
                    System.out.print( Contatore );
                    System.out.print( " " );
                    
                    Contatore += 2;
                    
                    //Se ho raggiunto il valore massimo termino i cicli
                    if (valoreMax < Contatore)
                    {
                        break;
                    } 
                }
                System.out.println( " |" );
            
            System.out.print( "\n" );
        }
            }}

    su cosa ha effetto il "break"?

    non dovrebbe interrompere il ciclo for che lo contiene??
    codice:
    for( int i = 1; i <= 5; i++ )            {
                    //Stampa il valore
                    System.out.print( Contatore );
                    System.out.print( " " );
                    
                    Contatore += 2;
                    
                    //Se ho raggiunto il valore massimo termino i cicli
                    if (valoreMax < Contatore)
                    {
                        break;
                    } 
                }

    invece, se si esegue il programma, il Contatore non si ferma affatto (cioè il break non ha effetto su esso):



    in pratica: break interrompe quello che sta tra le parentesi tonde di "for" per far continuare invece l' istruzioni nelle parentesi graffe ? è così?

    aiutoo!!

    grazie



    run:
    Fino a che numero devo arrivare?
    2
    | 0 2 |


    | 4 |


    | 6 |


    | 8 |


    | 10 |


    | 12 |


    | 14 |


    | 16 |


    | 18 |


    | 20 |


    | 22 |


    | 24 |


    | 26 |


    | 28 |


    | 30 |

    ecc.




    forse ho capito: il break non interrompe l' incrementare continuo del contatore, perché è scritto DOPO dell' istruzione che agisce sulla' opratore medesimo.. giusto??

    grazie
    Ultima modifica di Filippo11; 18-01-2015 a 13:57

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Il break termina il ciclo che lo contiene. Se questo ciclo è dentro un altro ciclo (come nel tuo caso), quest'ultimo non viene interrotto!
    Nel tuo esempio, quando fai break termini il for e l'esecuzione riprende da dopo il for. E cosa c'è dopo il for? Sei ancora nel corpo del while e quindi continui con quello... Il while riprende (è un ciclo infinito...) e cosa trova? Il for, che viene rieseguito. Il contatore viene quindi incrementato, viene fatto il break, il while riprende ecc ecc
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    grazie per la risposta Alex! devo però chiedere ancora una cosa:


    quando i arriva a valere 5, si esce dal for, si seguono le istruzioni successive (cioè "|" e "/n"), e si torna in cima al "while". dopo il while si trova subito l' istruzione per stampare "|", e dopo questo si trova di nuovo il for.
    ma questo for non valeva solo finchè i= 5 ??. cioè come è possibile che il programma torni ad eseguire un' istruzione (contatore++) contenuta dentro il for, se il for ha esaurito la sua condizione (cioè i è ormai superiore a 5.. quindi, ripeto, non si dovrebbe eseguire le istruzioni dipendenti da eso)

    grazie ancora

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ma parentesi, perché usi un buffered reader per l'input? Da java 1.5 c'è la classe Scanner che è tanto bella e comoda
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    grazie per la risposta Alex! devo però chiedere ancora una cosa:


    quando i arriva a valere 5, si esce dal for, si seguono le istruzioni successive (cioè "|" e "/n"), e si torna in cima al "while". dopo il while si trova subito l' istruzione per stampare "|", e dopo questo si trova di nuovo il for.
    ma questo for non valeva solo finchè i= 5 ??. cioè come è possibile che il programma torni ad eseguire un' istruzione (contatore++) contenuta dentro il for, se il for ha esaurito la sua condizione (cioè i è ormai superiore a 5.. quindi, ripeto, non si dovrebbe eseguire le istruzioni dipendenti da eso)

    grazie ancora


    forse (quando si riparte (dal while) e ci si imbatte nel for, quest' ultimo dà un ciclo da iterazione unica, perché i è già 5 (i == 5) e non subisce più l' incremento (i++)

    può essere?

    grazie

  6. #6
    Guarda cosa c'è come prima istruzione dopo la ( del for.... i = ?

  7. #7
    Quote Originariamente inviata da francesco.muia Visualizza il messaggio
    Guarda cosa c'è come prima istruzione dopo la ( del for.... i = ?
    Come ti ho cercato di farti capire, al secondo ciclo del while (quindi una volta eseguito il for o il break oppure quando i = 6) il flusso del programma ritorna diciamo in mano al while quindi esegue le ultime 2 estruzioni
    System.out.println( " |" );
    System.out.print( "\n" );
    ritorna a testare la condizione del while ( che è sempre vera)
    esegue System.out.print( "| " );
    e arriva di nuovo al for.
    Il for è un istruzione che a sua volta può essere composta da tre diciamo sotto istruzioni : dichiarazione; codizione; incremento.
    Quindi il programma appena incontra il for (cioè la ogni qualvolta trova la parolina for) effettua la dichiarazione (i = 1) e poi valuta la codizione se questa è vera incomincia a ciclare finché essa rimane vera.
    Quindi anche se nell'iterazione precedente la tua variabile i era arrivata a valere 6 la seconda volta che esegue il for rientra tranquillamente perché hai imposto come dichiarazione del for i=1.
    Quindi per farla spicciola quel for verrà eseguito ad ogni ciclo del while (indipendentemente dal valore assunto da i nelle precedente iterazioni).

  8. #8
    grazie mille francesco.muia! credo di aver capito

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.