Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    137

    [java] programmino

    Devo fare questo programma in java in cui inserisco un po di persone e mi calcoli quanti sono maschi. Solo che mi restituisce sempre zero....Potete trovarmi il problema?

    import java.io.*;
    class aula
    public static void main(String args[])
    {
    InputStreamReader In=new InputStreamReader(System.in);
    BufferedReader Tastiera=new BufferedReader(In);
    try
    {
    System.out.print("Quanti alunni vuoi inserire? ");
    int numal=Integer.parseInt(Tastiera.readLine());
    int x=0;
    for(int i=0;i<numal;i++)
    {
    System.out.print("Inserisci il nome: ");
    String nm=Tastiera.readLine();
    System.out.print("Inserisci il cognome: ");
    String cg=Tastiera.readLine();
    System.out.print("Inserisci il sesso: ");
    String se=Tastiera.readLine();
    if(se=="maschio")
    {
    x=x+1;
    }
    }
    System.out.print(x);
    }
    catch(Exception E)
    {
    System.out.print("Errore");
    }
    }

    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Java ha un sub-forum dedicato.
    Inoltre, il codice postalo fra i tag [code] e [/code] così rimane indentato (ma lo devi indentare tu!!) e con un carattere leggibile.

    Aggiungo: leggere anche il regolamento per i titoli.

    Sposto e correggo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    codice:
    import java.io.*;
    
    class prova
    {
    	public static void main(String args[])
    		{
    		InputStreamReader In = new InputStreamReader(System.in);
    		BufferedReader Tastiera = new BufferedReader(In);
    		try
    			{
    			System.out.print("Quanti alunni vuoi inserire? ");
    			int numal = Integer.parseInt(Tastiera.readLine());
    			int x = 0;
    			for(int i = 0; i < numal; i++)
    				{
    				System.out.print("Inserisci il nome: ");
    				String nm = Tastiera.readLine();
    				System.out.print("Inserisci il cognome: ");
    				String cg = Tastiera.readLine();
    				System.out.print("Inserisci il sesso: ");
    				String se = Tastiera.readLine();
    				if (se.equals("maschio"))
    					x = x+1;
    				}
    			System.out.print(x);
    			}
    		catch(Exception E)
    			{
    			System.out.print("Errore: "+E);
    			}
    		}
    }
    Cattivo confronto ...
    Experience is what you get when you don’t get what you want

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    ---> se=="maschio"

    non va bene

    L'== tra oggetti confronta solo i reference, non il contenuto. Ad esempio,

    String a = "ciao";
    String b = "ciao";

    System.out.println(a == b); <--- stampa "false"

    Per confrontare tra loro oggetti devi usare equals (e ridefinirlo nelle tue classi se occorre)
    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
    Appunto :
    String a = "ciao";
    String b = "ciao";
    System.out.println(a == b);
    Dalle mie parti stampa true ...
    System.out.println(a == "ciao");
    Stampa a sua volta true ...
    Se la stringa viene letta da tastiera, però, l'operatore di uguaglianza non ritorna più true
    Esempio
    codice:
    BufferedReader Tastiera = new BufferedReader (new InputStreamReader(System.in));
    String a = "ciao";
    String b = "ciao";
    System.out.println(a == b);
    System.out.println(a == "ciao");
    System.out.println("Inserisci: ");
    b = Tastiera.readLine ();
    System.out.println(b == "ciao");
    System.out.println(b.equals("ciao"));
    Stampa:
    codice:
    true
    true
    Inserisci: ciao<invio>
    false
    true
    Experience is what you get when you don’t get what you want

  6. #6
    Originariamente inviato da Alex'87

    L'== tra oggetti confronta solo i reference, non il contenuto. Ad esempio,

    String a = "ciao";
    String b = "ciao";

    System.out.println(a == b); <--- stampa "false"

    Per confrontare tra loro oggetti devi usare equals (e ridefinirlo nelle tue classi se occorre)
    E' vero che == tra oggetti confronta solo i reference infatti se fai

    String a = "ciao";
    String b = "ciao";

    tutte e due puntano alla stesso istanza del oggetto. ed è true.

    Invece se fai

    String a = new String("ciao");
    String b = new String("ciao");

    a viene la creazione di due oggetti percio anche se il contenutto e uguale non sono gli stessi oggetti percio sara false.

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Romeo25
    E' vero che == tra oggetti confronta solo i reference infatti se fai

    String a = "ciao";
    String b = "ciao";

    tutte e due puntano alla stesso istanza del oggetto. ed è true.

    Invece se fai

    String a = new String("ciao");
    String b = new String("ciao");

    a viene la creazione di due oggetti percio anche se il contenutto e uguale non sono gli stessi oggetti percio sara false.
    Ma quando faccio
    String a = "ciao";
    String b = "ciao";

    non è sott'inteso

    String a = new String("ciao");
    String b = new String("ciao");

    ?

    :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Alex'87
    Ma quando faccio
    String a = "ciao";
    String b = "ciao";

    non è sott'inteso

    String a = new String("ciao");
    String b = new String("ciao");

    ?

    :master:
    No: le due stringhe sono dichiarate come "literal", quindi viene istanziato un solo oggetto ("ciao", appunto) che viene referenziato dalle due variabili.
    L'operatore new, invece, alloca effettivamente nuova memoria per oggetti distinti.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    No ...
    String a = "abc";
    E' uguale a fare:
    char data[] = {'a', 'b', 'c'};
    String a = new String(data);

    EDIT: battutto sul tempo XD

    PS: http://java.sun.com/j2se/1.4.2/docs/...ng/String.html
    Experience is what you get when you don’t get what you want

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da LeleFT
    No: le due stringhe sono dichiarate come "literal", quindi viene istanziato un solo oggetto ("ciao", appunto) che viene referenziato dalle due variabili.
    L'operatore new, invece, alloca effettivamente nuova memoria per oggetti distinti.

    Ciao.
    Ah ok :master:
    Non ci avevo pensato :master:

    Grazie per le spiegazioni, non si finisce mai di imparare
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.