Newsgroup: it.comp.java
Titolo: spiegazione

salve.
mi potreste spiegare perchè nell'esercio1 in output viene stampato
"false" quando invece secondo me dovrebbe andare in loop, visto che la
condizione del while si verifica sempre?
E nell'esercizio2, perchè mi stampa gli indirizzi delle memorie?
[I@73d6a5
[I@111f71
[I@273d3c
[I@256a7c
Esercizio1:
public class primaC
{
	public static void main (String[]args)
	{
		boolean b = true, c=false, d=false;
		while (b || c || d)
		{
			b = !b;
			indovina ( b );
		}
	}
 
	static  void indovina (boolean b)
	{
		System.out.println (b);
		b = !b; 
	}
}
Esercizio2
import javax.swing.*;
public class secondaB2
{
	public static void main(String[]args)
	{
		String[]s={"danone","federo", "oderodo", "fodofo"};
		for(int i=0; i<s.length; i++)
			{
				System.out.println(a(s));
			}
		System.exit(0);
	}
 
	public static int[]a (String[]s)
	{
		int cont=0;
		int[]a=new int[s.length];
		for(int i=0; i<s.length; i++)
		{
			for(int j=0; j<s.length; j++)
			{
				if(s[i].charAt(j)=='o')
				cont++;
			}
			a[i]=cont;
			cont=0;
		}
 
		return a;
	}
}
grazie mille
saluti,
fra 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 		while (b || c || d)
Questo effettua quella che viene chiamata "short-circuit evaluation", in 
pratica:
- valuta il termine a sinistra (b nel tuo caso)
- se questo č true, esci dall'espressione restituendo true 
(indipendentemente dai valori delle altre variabili)
- se invece č false, continua a valutare l'espressione
Se vuoi che vengano valutati TUTTI i termini dell'espressione, usa 
l'operatore | (singolo).
Leggi qui:
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#54532
-- 
                 ''~``
                ( o o )
+---------.oooO--(_)--Oooo.----+
 
http://megadix.clarence.com/
 
http://www.mict.it/

"Dimitri De Franciscis" scriviu:
(cut)
ok, ma io nn ho capito perchè all'inizio b è true
ed esegue il while. Poi b diventa false, va nel metodo "indovina" 
il quale stampa b,cioè false. Poi quest'ultimo ridiventa true e a 
questo punto non dovrebbe ricominciare il ciclo while come all'inizio,
visto che è sempre true??


 
Nel metodo indovina stai lavorando su una copia della variabile b del 
ciclo. Quindi qunado fa b = !b; cambi la variabile b locale del metodo e 
non quella del ciclo che resta false.
Nei vecchi post ci sono varie discussioni sul passaggio dei parametri in 
java.
Paolo.

 non quella del ciclo che resta false.
aaah ecco perchč!
grazie mille! :)


 System.out.println(a(s));
Ti ricorderai che println invoca toString() su ogni oggetto che gli viene
passato. il toString() di Object (se per gli array, come credo non è
ridefinito, altrimenti il toString() degli array) restituisce quello che
vedi.
Questo codice è equivalente a:
int[] arr = a(s);
String s = arr.toString();
System.out.println(s); 
Ciao!
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it

 confondere dal nome!
Volevo aggiungere di fare attenzione se il parametro di ingresso è di un
tipo primitivo (int, boolean...) o un oggetto: i tipi primitivi vengono
passati per copia, gli oggetti no! Quindi se indovina ricevesse un
"oggetto", il programma andrebbe in loop!
Ciao
Nino