Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Java] Trasformare da INT a STRING (Numeri che iniziano con 0!)

    Salve a tutti,

    Ho un problema maledettamente fastidioso. Non so per quale motivo ma non riesco a trasformare nessun intero in una stringa quando l’intero da trasformare comincia con 0. E purtroppo non posso rimuovere questi 0 dal numero (anche se sono matematicamente irrilevanti) poiché il numero rappresenterebbe il genoma di una rete neurale.

    Quello che succede:

    Se uso Integer.toString() e come argomento passo un numero che inizia per 0 il codice svirgola e non ci capisce più un cazzo!

    Se metto:

    String a = Integer.toString(000000000)
    String a = Integer.toString(011000110)
    String c = Integer.toString(111111110)

    a diventa 0
    b diventa stranamente 2359368 (!!)

    Invece:

    c diventa, come è giusto che sia, 111111110

    Lo stesso identico problema si presenta se uso String.valueOf! Qualche idea?

    Grazie in anticipo,
    Alessandro

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Trasformare da INT a STRING (Numeri che iniziano con 0!)

    Originariamente inviato da DarkAlexander
    Se uso Integer.toString() e come argomento passo un numero che inizia per 0 il codice svirgola e non ci capisce più un cazzo!
    I valori numerici "letterali" (scritti nel sorgente) che iniziano con 0 sono in base ottale (non decimale!).

    Per il resto non è chiaro cosa vuoi fare e perché.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: [Java] Trasformare da INT a STRING (Numeri che iniziano con 0!)

    Originariamente inviato da andbin
    I valori numerici "letterali" (scritti nel sorgente) che iniziano con 0 sono in base ottale (non decimale!).

    Per il resto non è chiaro cosa vuoi fare e perché.
    Non ho ben capito.

    Allora, io ho una serie di interi disposti in un array:

    codice:
    int[] glossary;
    		glossary = new int[256];
    		
    		glossary[0] = 000000000;
    		glossary[1] = 000000011;
    		glossary[2] = 000000101;
    		glossary[3] = 000000110;
    		glossary[4] = 000001001;
    		glossary[5] = 000001011;
    		glossary[6] = 000001101;
    		glossary[7] = 000001110;
    		glossary[8] = 000010001;
    		glossary[9] = 000010011;
    Sarebbero 256 ma qui ho preso solamente i primi dieci per comodità. A questo punto devo scegliere casualmente uno di questi numeri e trasformarlo in una stringa.

    codice:
    int random = (int)(Math.random() * 256);
    String wordInUse = Integer.toString(glossary[random]);
    Il problema è che quanto l'intero preso inizia per un qualsiasi numero diverso da 0, wordInUse diventa, coe è giusto che sia, la copia stringa di quel numero. Quando invece il numero comincia con 0 wordInUse diventa un numero assurdo che sembrerebbe non avere nessuna correlazione con l'intero preso in esame (ma sicuramente c'è). Ed io mi chiedo, come mai? Cosa posso fare per trasformare un intero che comincia con 0 in una stringa?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [Java] Trasformare da INT a STRING (Numeri che iniziano con 0!)

    Originariamente inviato da DarkAlexander
    Non ho ben capito.

    codice:
    		glossary[0] = 000000000;
    		glossary[1] = 000000011;
    		glossary[2] = 000000101;
    		glossary[3] = 000000110;
    		glossary[4] = 000001001;
    		glossary[5] = 000001011;
    		glossary[6] = 000001101;
    		glossary[7] = 000001110;
    		glossary[8] = 000010001;
    		glossary[9] = 000010011;
    Quando invece il numero comincia con 0 wordInUse diventa un numero assurdo che sembrerebbe non avere nessuna correlazione con l'intero preso in esame (ma sicuramente c'è). Ed io mi chiedo, come mai?
    Scusa eh, non so cosa conosci di Java o della programmazione in generale. Conosci i sistemi di numerazione? C'è quello decimale (quello che usiamo tutti i giorni) ... c'è quello esadecimale, quello binario e quello ottale. (questi sono i 4 sistemi di numerazione più coinvolti nell'informatica)

    In Java (e in svariati altri linguaggi di programmazione) un numero "letterale" (che vuol dire: scritto nel sorgente) che inizia con 0 è riconosciuto/trattato in base ottale. Le cifre possono andare solo da 0 a 7.

    Le seguenti variabili:

    codice:
    int a = 64;      // in decimale
    int b = 0x40;    // in esadecimale
    int c = 0100;    // in ottale
    hanno tutte lo stesso valore, quello che cambia è solo la rappresentazione nel sorgente.

    Originariamente inviato da DarkAlexander
    Cosa posso fare per trasformare un intero che comincia con 0 in una stringa?
    Se tu pretendi che quella costante sia in decimale, non è così che funziona.

    Però il modo c'è: usi il toString(int i, int radix) passando come radice 8. Se il letterale è 0100 (il valore decimale è 64), se lo converti con radice 8, questo toString ti fornisce ... "100" perché è la rappresentazione in stringa di 64 (decimale) fatta in base ottale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    Re: Re: Re: Re: [Java] Trasformare da INT a STRING (Numeri che iniziano con 0!)

    Originariamente inviato da andbin
    Scusa eh, non so cosa conosci di Java o della programmazione in generale. Conosci i sistemi di numerazione? C'è quello decimale (quello che usiamo tutti i giorni) ... c'è quello esadecimale, quello binario e quello ottale. (questi sono i 4 sistemi di numerazione più coinvolti nell'informatica)

    In Java (e in svariati altri linguaggi di programmazione) un numero "letterale" (che vuol dire: scritto nel sorgente) che inizia con 0 è riconosciuto/trattato in base ottale. Le cifre possono andare solo da 0 a 7.

    Le seguenti variabili:

    codice:
    int a = 64;      // in decimale
    int b = 0x40;    // in esadecimale
    int c = 0100;    // in ottale
    hanno tutte lo stesso valore, quello che cambia è solo la rappresentazione nel sorgente.

    Se tu pretendi che quella costante sia in decimale, non è così che funziona.

    Però il modo c'è: usi il toString(int i, int radix) passando come radice 8. Se il letterale è 0100 (il valore decimale è 64), se lo converti con radice 8, questo toString ti fornisce ... "100" perché è la rappresentazione in stringa di 64 (decimale) fatta in base ottale.
    Ho capito perfettamente.
    Grazie mille!

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.