ToString

di il
13 risposte

ToString

Bene e visto che non riesco a dormire ne approfitto per aprire un'altra discussione in merito al toString.
ho provato un po' a usarlo ma evidentemente, o qualcosa mi sfugge sulla sua funzione, oppure non lo sto usando bene.
sostanzialmente io posso usare il toString per convertire un ASCII di un carattere in char giusto? e poi in teoria posso concatenare 2 char in una variabile usando l'operatore + giusto?
quindi io volevo generare una targa automobilistica formato nuovo, 2 lettere 3 numeri 2 lettere, e per le lettere ho preso gli ascii da 65 a 90, le lettere maiuscole.
io ho provato il seguente codice:

	private String setTarga()
	{
		int f1 = rng.nextInt((90-65)) + 65;
		int f2 = rng.nextInt((90-65)) + 65;
		String pos1 = Integer.toString(f1) + Integer.toString(f2);
		int s = rng.nextInt(999);
		String pos2 = Integer.toString(s);
		int t1 = rng.nextInt((90-65)) + 65;
		int t2 = rng.nextInt((90-65)) + 65;
		String pos3 = Integer.toString(t1) + Integer.toString(t2);
		targa = pos1 + " " + pos2 + " " + pos3;
		return targa;
	}
che però non mi restituisce dei char.
metto uno screen di quello che mi esce (appena imparerò a fare una piccola interfaccia grafica mi sentirò meglio)
si evince che la prima e l'ultima sequenza di numeri, sono semplicemente state concatenate. senza essere convertite in char.
non ne capisco il motivo onestamente
ho provato a fare anche variabile.toString(), e toString(variabile) ma non è cambiato nulla, anzi, non funzionavano proprio
potreste aiutarmi a capire cosa sbaglio per favore?
Allegati:
22492_04e68e5ffbe9e838ed34136a34c61b1f.jpg
22492_04e68e5ffbe9e838ed34136a34c61b1f.jpg

13 Risposte

  • Re: ToString

    Solita domada:su QUALE libro sta studiando?
    Gia' la erminologia che usi dimostra qualche lacuna:
    toString ritorna un String NON un char!
  • Re: ToString

    Come già detto tempo addietro, al momento su nessuno, ho elaborato un esercizio che ci hanno dato a scuola e lo sto facendo a modo mio inserendo svariate cose.
    verso inizio anno prenderò in mano il manuale.
    comunque ho risolto, il codice corretto è Character.toString((char) int)
  • Re: ToString

    KuroKami69 ha scritto:


    sostanzialmente io posso usare il toString per convertire un ASCII di un carattere in char giusto?
    Il contenuto di una variabile char è GIÀ il codice ASCII (meglio dire Unicode in generale) del carattere.

    char c = 65;

    c contiene il carattere 'A'

    KuroKami69 ha scritto:


    e poi in teoria posso concatenare 2 char in una variabile usando l'operatore + giusto?
    No, un char più un char fa ... un int! Il char è tecnicamente un tipo NUMERICO.

    char a = 'A';
    char b = '#';
    char c = (char) (a + b);

    c contiene il carattere 'd' ovvero 65 (di 'A') + 35 (di '#') = 100 (che è 'd')
    Il cast a char SERVE perché per via della binary numeric promotion i due valori char vengono portati temporaneamente a int per fare l'addizione e il risultato verrebbe quindi un int.

    L'operatore + fa una concatenazione di stringhe SOLO se ALMENO uno dei due operandi è un String. Quindi se vuoi avere "A#" si può fare:

    char a = 'A';
    char b = '#';
    String s = "" + a + b;

    KuroKami69 ha scritto:


    verso inizio anno prenderò in mano il manuale.
    Sì ... meglio prima che poi.

    KuroKami69 ha scritto:


    il codice corretto è Character.toString((char) int)
    Questo è un metodo statico di "utilità" di Character.
  • Re: ToString

    Oltre a quello che ti hanno già detto, ti sconsiglio (ancora) fortemente di chiamare quel metodo setTarga (), le convenzioni ci sono e vanno rispettate, il set non si usa in quel modo.
    Anche se non darai mai il tuo codice a qualcuno (compreso il tuo prof.) che ti maledirà se vede quella cosa, il bel giorno che decidi di salvarti il tuo database di macchine su file e di ripristinarlo all'esecuzione successiva, ti accorgi che non hai un metodo per settare la targa in modo corretto, senza rigenerarla ogni volta. Quindi come minimo:
    
    public String generaTargaCasuale () {
    	// ritorni quello che stai facendo al momento nel setTarga ();
    }
    public void setTarga (String targa) {
    	this.targa = targa;
    }
    
    E se vuoi settare la targa casualmente basta fare setTarga (generaTargaCasuale ());. Poi dove dovrebbe stare quel metodo generaTargaCasuale è un'altra cosa, io lo lascerei sicuramente al di fuori della classe che modella l'automobile, quindi il codice sarebbe leggermente diverso ...
  • Re: ToString

    Indubbiamente la tua soluzione è la migliore, e da tutti i consigli e le spiegazioni che mi state dando sto imparando, quindi, grazie
    ma questo codice diciamo che è la versione pre-pre-pre-pre alfa del mio essere programmatore.
    magari un giorno mi gira e lo vorrò fare meglio, vorrò fare qualcosa di più realistico che un'auto con tutti i parametri casuali, e allora farò una v2 di questo script migliorandolo.
    oltre a fare un array di lettere, e al tostring, ci sono altri metodi per convertire un unicode in lettera?
  • Re: ToString

    KuroKami69 ha scritto:


    ci sono altri metodi per convertire un unicode in lettera?
    Ma l'ho detto prima: il contenuto di un char È il valore Unicode.
  • Re: ToString

    andbin ha scritto:


    KuroKami69 ha scritto:


    ci sono altri metodi per convertire un unicode in lettera?
    Ma l'ho detto prima: il contenuto di un char È il valore Unicode.
    ah, quindi a me basta semplicemente, per esempio, fare una cosa simile
    char a = 65;
    System.out.println(a);
    e mi stampa A giusto?
  • Re: ToString

    @Kuro, e' ALTAMENTE consigliato (praticamente OBBLIGATORIO) imparare le buone pratiche di programmazione FIN DA SUBITO. Anzi, PRIMA QUELLE, e solo DOPO metti le mani al codice.

    Sia perche' questo aiuta TE ad essere piu' rigoroso, e quindi ti obbliga a ragionare (FONDAMENTALE per un programmatore, non si programma 'a capocchia'), sia a noi a capire gli eventuali pasticci.

    Sia perche' eviterai cazziatoni nelle risposte che, come prima cosa, ti faranno notare la CATTIVA PRATICA addottata.

    Quindi, cerca su Google, 'java code convention' e seguile scrupolosamente.
    Non sono N-mila: sono 10/20 regolette molto semplici ma che forniscono benefici anche nel lungo periodo e in situazioni a cui ora non penseresti mai. Del tipo: 'Aaah, se a quel tempo avessi fatto cosi', ora questo sarebbe moooooolto piu' semplice ....'.

    Altra cosa: NON INVENTARTI I TERMINI e NON USARE TERMINI A SPROPOSITO.
    Usa la terminologia corretta, altrimenti non ti di capisce: quello che stai realizzando e' un PROGRAMMA Java, NON UNO SCRIPT.

    Gli script (che, attualmente per Java NON ESISTONO, forse con Java 9) sono un'altra cosa!
    Sempre programmazione e', ok, ma sempre un'altra cosa!

    Bicicletta e nave sono entrambi mezzi di locomozione, ma non si assomigliano per nulla. Magari biciletta e moto, ma con una nave la vedo parecchio difficile.
  • Re: ToString

    Ora cerco, grazie mille

    EDIT:
    questo che allego? (datato 1997)
    Allegati:
    22492_43236cd755f73b7af911883684359938.pdf
    22492_43236cd755f73b7af911883684359938.pdf
  • Re: ToString

    KuroKami69 ha scritto:


    ah, quindi a me basta semplicemente, per esempio, fare una cosa simile
    char a = 65;
    System.out.println(a);
    e mi stampa A giusto?
    Sì. Tutti questi seguenti:
    char a = 65;          // codice in decimale
    char a = 0x41;        // codice in esadecimale
    char a = 'A';         // carattere
    char a = '\u0041';    // carattere come escape Unicode
    char a = '\101';      // carattere come escape ottale
    sono assolutamente equivalenti, ovvero danno un char 'A' .
  • Re: ToString

    Capisco. ti ringrazio per la spiegazione
  • Re: ToString

    KuroKami69 ha scritto:


    questo che allego? (datato 1997)
    Sì quello, come data è molto "vecchio" ma è tuttora attualissimo come concetti e indicazioni.
  • Re: ToString

    Allora me lo stampo e intanto gli do una letta cercando di capire. il mio inglese non è buono
Devi accedere o registrarti per scrivere nel forum
13 risposte