Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Scrivere lo 0

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108

    Scrivere lo 0

    Ragazzi mi potete dire come faccio a stamparare lo 0?
    Vi riporto il codice
    codice:
    System.out.print("matricola : ");
    int mat = in.nextInt();
    String m = Integer.parseInt(mat);
    System.out.println(mat);
    se mat è uguale a 0009 mi stampa solo 9.
    Sarà perchè uso un int...che formato devo usare?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    codice:
    int mat = in.nextInt();
    String m = Integer.parseInt(mat);
    La seconda riga è completamente senza senso.

    Integer.parseInt() prende una String e ritorna un int... tu stai facendo il contrario (non compila nemmeno).

    Quello che serve a te è un Formatter:

    codice:
    int mat = in.nextInt();
    
    NumberFormat nf = NumberFormat.getIntegerInstance();
    nf.setMinimumIntegerDigits(5);   // Mette eventuali zeri fino a formare un numero di 5 cifre
    nf.setGroupingUsed( false );   // Toglie l'uso del separatore delle migliaia
    
    System.out.println( nf.format(mat) );
    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

    Re: Scrivere lo 0

    Originariamente inviato da GianniMal
    Ragazzi mi potete dire come faccio a stamparare lo 0?
    Vi riporto il codice
    codice:
    System.out.print("matricola : ");
    int mat = in.nextInt();
    String m = Integer.parseInt(mat);
    System.out.println(mat);
    se mat è uguale a 0009 mi stampa solo 9.
    Sarà perchè uso un int...che formato devo usare?
    Banalmente potresti appendere (n - m) zeri davanti alla matricola (convertita in String), dove n è la massima lunghezza e m è la lunghezza della matricola.

    Nel tuo esempio la massima lunghezza è 4, quindi appendi 3 zeri quando manderai in output quella matricola.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    Scusa hai ragione avevo copiato male cmq quello che volevo scrivere era questo
    codice:
    System.out.print("matricola : ");
    int mat = in.nextInt();
    String m = String.valueOf(mat);
    ma non c'è un formato che permette di scrivere anche lo zero??

    cmq grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    Il problema è che devo risolvere questo semplice esercizio:
    Scrivere un programma che chiede all'utente nome, cognome
    e numero di matricola e li stampa in maiuscolo in verticale
    in un campo di asterischi.
    Esempio
    ------
    Nome --> federico
    Cognome --> do
    Matricola --> 000111
    FD0
    EO0
    D*0
    E*1
    R*1
    I*1
    C**
    O**

    Il codice che vi riporto funziona ma non mi scrive gli zeri della matricola.
    E' così lungo perchè faccio i controlli delle varie lunghezze per gestire il tutto.
    codice:
    public static void main(String[] args) {
    	Scanner in = new Scanner(System.in);
    	System.out.print("nome : ");
    	String nome = in.nextLine();
    	System.out.print("cognome : ");
    	String cognome = in.nextLine();
    	System.out.print("matricola : ");
    	int mat = in.nextInt();
    	String m = String.valueOf(mat);
    		
    	int lun_n = nome.length();
    	int lun_c = cognome.length();
    	int lun_m = m.length();
    		
    	char c = ' ', d = ' ', e = ' ';
    	
    	if((lun_n >= lun_c) && (lun_n >= lun_m)) {
    		for(int i=0;i<lun_n;i++){
    			c = nome.charAt(i);
    			if(i<lun_c)
    				d = cognome.charAt(i);
    			else
    				d = '*';
    			if(i<lun_m)
    				e = m.charAt(i);
    			else
    				e = '*';
    			System.out.print(c);
    			System.out.print(d);
    			System.out.print(e);
    			System.out.println();
    		}
    	}
    	else if((lun_c >= lun_n) && (lun_c >= lun_m)){
    		for(int i=0;i<lun_c;i++){
    			c = cognome.charAt(i);
    			if(i<lun_n)
    				d = nome.charAt(i);
    			else
    				d = '*';
    			if(i<lun_m)
    				e = m.charAt(i);
    			else
    				e = '*';
    			System.out.print(d);
    			System.out.print(c);
    			System.out.print(e);
    			System.out.println();
    		}
    	}
    	else {
    		for(int i=0;i<lun_m;i++){
    			c = m.charAt(i);
    			if(i<lun_n)
    				d = nome.charAt(i);
    			else
    				d = '*';
    			if(i<lun_c)
    				e = cognome.charAt(i);
    			else
    				e = '*';
    			System.out.print(d);
    			System.out.print(e);
    			System.out.print(c);
    			System.out.println();
    		}
    	}
    }

  6. #6
    Originariamente inviato da GianniMal
    Scusa hai ragione avevo copiato male cmq quello che volevo scrivere era questo
    codice:
    System.out.print("matricola : ");
    int mat = in.nextInt();
    String m = String.valueOf(mat);
    ma non c'è un formato che permette di scrivere anche lo zero??

    cmq grazie
    Se usi nextInt qualsiasi numero di zeri apponi avanti al numero verranno rimossi. Se hai bisogno degli 0, allora non usare nextInt ma leggi direttamente la stringa con nextLine.
    Poi volendo puoi controllare se la stringa inserita sia un numero con Integer.parseInt intercettando l'eccezione NumberFormatException che, se viene lanciata, ti informa che la stringa inserita non è un numero.
    lolide
    Java Programmer

    Informati

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    108
    ok grazie mille risolto...basta non leggere l'int ma una semplice stringa...

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.