Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Originariamente inviato da JanQuarius
    E quando gli chiedo qualcosa lui mi dice perchè non ho studiato...
    Nel tuo codice hai scritto:
    codice:
    	if (numero%2==0)
    			numeriPari = numero;
    	else
    			numeriDispari = numero;
    quindi, purtroppo, mi viene da pensare che probabilmente il prof ha ragione, oppure non hai capito.

    Lo scopo dell'algoritmo è quello di fornire in output n numeri pari ed m numeri dispari tra il totale di numeri inseriti dall'utente (finchè non ha inserito 0).
    Quindi ciò ti deve stimolare a salvare più numeri.

    La scelta di usare un oggetto String è corretta (anche se ti avevo consigliato di andarti a vedere altre strutture lineari che consentono un'efficiente memorizzazione di più oggetti), ma evidentemente non sai come utilizzarlo.

    Se tu scrivessi:
    codice:
    String s = "uno";
    s = "due";
    
    System.out.println(s); //ti stampa: due
    e quindi non fai altro che cambiare il valore al riferimento s.
    Il modo corretto per concatenare la stringa due alla stringa uno è il seguente:
    codice:
    String s = "uno";
    s += " due"; //oppure s = s + " due";
    
    System.out.println(s); //ti stampa: uno due
    Adesso sei in grado di apportare le giuste correzioni.

  2. #12
    andbin, VincenzoTheBest e valia vi ringrazio!
    Grazie per la vostra attenzione e per il vostro impegno...ORA MI SONO ILLUMINATO!
    Il programma mi è venuto, eccolo:

    codice:
    /*
    <<<Descrizione del problema>>>
    Bisogna scrivere un algoritmo che
    consenta di richiedere numeri interi 
    finchè viene inserito il numero 0 e
    indichi quanti sono stati inseriti 
    i numeri positivi e negativi.
    
    <<<Analisi dei dati>>>
    
    	*variabili
    		-numeri
    	*input
    		-numeri
    	*output
    		-numeriPari
    		-numeriDispari
    
    <<<Pseudo codifica>>>
    inizio classe Numero_Casuale
    	
    	int numeri;
    	
    		1.chiedo, leggo e memorizzo i numeri;
    		2.verifico se il numero inserito è pari o dispari
    		e lo memorizzo;
    		3.verifico se viene inserito lo zero;
    		4.se lo zero viene inserito, allora elenco da una
    		parte i numeri pari e dall'altra i dispari
    		e finisco il programma;
    	
    fine classe Numero_Casuale
    */
    
    
    //Importo la classe di utilità Scanner
    import java.util.Scanner;
    
    class Numero_Casuale
    {
    	public static void main (String[]args)
    	{
    		//dichiaro e istanzio le variabili
    		int numero;
    		String numeriPari="";
    		String numeriDispari="";
    	
    	//costruisco l'oggetto <sc> derivante dalla classe Scanner
    	Scanner sc = new Scanner(System.in);
    	
    		do{
    		System.out.print("Inserire un numero intero:");
    		numero = sc.nextInt();
    		
    		if ((numero%2==0)&&(numero!=0))
    		numeriPari += ""+numero+",";
    			
    		if ((numero%2!=0)&&(numero!=0))
    		numeriDispari += ""+numero+",";
    			
    		} while (numero != 0);
    		
    		//stampo in output i numeri pari da una parte ed i dispari dall'altra
    		System.out.println("I numeri pari inseriti sono:"+ numeriPari);
    		System.out.println("I numeri dispari inseriti sono:"+ numeriDispari);
    	}
    }

  3. #13
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    vediamo se hai capito davvero, riesci a fare la stessa cosa usando anziché il ciclo do-while, il ciclo while??

  4. #14
    Ciao valia!
    Allora ho fatto questo:

    codice:
    import java.util.Scanner;
    
    class Zero_Pari_Dispari_While
    {
    	public static void main (String[]args)
    	{
    		//dichiaro e istanzio le variabili
    		int numero = 0;
    		String numeriPari="";
    		String numeriDispari="";
    	
    	//costruisco l'oggetto <sc> derivante dalla classe Scanner
    	Scanner sc = new Scanner(System.in);
    	
    	
    		while ((numero >= 0)||(numero <= 0));
    		{
    		System.out.print("Inserire un numero intero:");
    		numero = sc.nextInt();
    		}	
    		
    		if (numero%2==0)
    		numeriPari += ""+numero+",";
    		else
    		numeriDispari += ""+numero+",";
    		if (numero==0)
    		System.out.println("I numeri pari inseriti sono:"+ numeriPari);
    		System.out.println("I numeri dispari inseriti sono:"+ numeriDispari);
    	}
    }
    Non riesco a capire perchè mi dà l'effetto collaterale...ho provato a cambiare il posto delle condizioni,cioè mettere le "if" dentro il while o metterli all'esterno, ma non cambia quasi niente...Non riesco a capire il mio errore

  5. #15
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ci sei quasi, potenzialmente hai scritto un ciclo infinito.
    Ricorda la condizione di uscita dal ciclo: esci se inserisci il valore zero, per cui scrivila bene nel while. Ti suggerisco una cosa: devi fare tutto il ciclo finché metti un valore diverso da zero.
    Inoltre la stringa che stampi a video puoi farla anche fuori dal ciclo, ti interessa sapere quali numeri hai inserito, perché farlo ogni volta?

  6. #16
    Allora, ho coretto l'esercizio e l'effetto collaterale non c'è più. Però il programma finisce al primo numero inserito...come mai?
    codice:
    /*
    
    //Importo la classe di utilità Scanner
    import java.util.Scanner;
    
    class Zero_Pari_Dispari_While
    {
    	public static void main (String[]args)
    	{
    		//dichiaro e istanzio le variabili
    		int numero = 0;
    		String numeriPari="";
    		String numeriDispari="";
    	
    	//costruisco l'oggetto <sc> derivante dalla classe Scanner
    	Scanner sc = new Scanner(System.in);
    	
    	
    		while (numero!=0);
    		{
    		System.out.print("Inserire un numero intero:");
    		numero = sc.nextInt();
    		
    		if (numero%2 == 0)
    		numeriPari += ""+numero+",";
    		if (numero%2 != 0)
    		numeriDispari += ""+numero+",";
    		}
    		
    		System.out.println("I numeri pari inseriti sono:"+ numeriPari);
    		System.out.println("I numeri dispari inseriti sono:"+ numeriDispari);
    	}
    }

  7. #17
    Poi, ho fatto un errore...
    Invece di risolvere il problema per i numeri positivi e negativi, ho risolto per pari e dispari...
    Ho corretto l'esercizio con do/while:
    codice:
    /**Progettare una classe che consenta 
    di richiedere numeri finché viene inserito il valore 0 (zero).
    Alla fine indichi quanti sono stati i 
    numeri positivi e i numeri negativi inseriti.
    
    Risolvere il seguente esercizio rispettando le seguenti fasi:
    - descrizione del problema;
    - analisi dei dati (costanti, variabili, input, output, attributi, metodi);
    - pseudo codifica dell’algoritmo risolutivo;
    - implementazione in Java.*/
    
    /*
    <<<Descrizione del problema>>>
    Bisogna scrivere un algoritmo che
    consenta di richiedere numeri interi 
    finchè viene inserito il numero 0 e
    indichi quanti sono stati inseriti 
    i numeri positivi e negativi.
    
    <<<Analisi dei dati>>>
    
    	*variabili
    		-numeri
    	*input
    		-numeri
    	*output
    		-numeriPos
    		-numeriNeg
    	
    	*metodi
    		
    <<<Pseudo codifica>>>
    inizio classe Zero_Pos_Neg
    	
    	int numeri;
    	
    		1.chiedo, leggo e memorizzo i numeri;
    		2.verifico se il numero inserito è positivo
    		o negativo e lo memorizzo;
    		3.verifico se viene inserito lo zero;
    		4.se lo zero viene inserito, allora elenco da una
    		parte i numeri posotivi e dall'altra i negativi
    		e finisco il programma;
    	
    fine classe Zero_Pos_Neg
    */
    
    
    //Importo la classe di utilità Scanner
    import java.util.Scanner;
    
    class Zero_Pos_Neg
    {
    	public static void main (String[]args)
    	{
    		//dichiaro e istanzio le variabili
    		int numero;
    		String numeriPos="";
    		String numeriNeg="";
    	
    	//costruisco l'oggetto <sc> derivante dalla classe Scanner
    	Scanner sc = new Scanner(System.in);
    	
    		do{
    		System.out.print("Inserire un numero intero(positivo o negativo):");
    		numero = sc.nextInt();
    		
    		if (numero>0)
    		numeriPos += ""+numero+",";
    			
    		if (numero<0)
    		numeriNeg += ""+numero+",";
    			
    		} while (numero != 0);
    		
    		//stampo in output i numeri pari da una parte ed i dispari dall'altra
    		System.out.println("I numeri positivi inseriti sono:"+ numeriPos );
    		System.out.println("I numeri negativi inseriti sono:"+ numeriNeg );
    	}
    }
    Questo va bene, inveco quello solo con while no...

  8. #18
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    perché tu numero lo inizializzi a 0

    codice:
    int numero = 0;
    ma prima del ciclo devi fare

    codice:
    numero = sc.nextInt();
    while (numero != 0){
    //fai i tuoi conti 
    numero = sc.nextInt();
    }
    ti renderai conto che sapere se è positivo o negativo oppure se è pari o dispari ti fa cambiare la condizione di if, non l'algoritmo in sé per sé

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 © 2026 vBulletin Solutions, Inc. All rights reserved.