Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: [java]da char a int

  1. #1

    [java]da char a int

    Salve ragazzi, come la volta scorsa mi trovo a chiedervi un auto per quanto riguarda un programmino che devo fare, vado al punto:

    io ho un servizio che legge caratteri e li memorizza in un array di char, chiedo all'utente un numero(che in questo caso è char), io devo manipolare l'array in modo tale da avere in output una int. vi faccio un esempio,

    l'utente mi da un char(numero); '234'

    io devo manipolare l'array e in output devo avere un int

    234

    mille grazie per l'aiuto spero di diventare bravo come voi un giorno...

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

    Re: [java]da char a int

    Originariamente inviato da dom.vecchioni
    io ho un servizio che legge caratteri e li memorizza in un array di char, chiedo all'utente un numero(che in questo caso è char), io devo manipolare l'array in modo tale da avere in output una int. vi faccio un esempio,

    l'utente mi da un char(numero); '234'

    io devo manipolare l'array e in output devo avere un int

    234
    Quindi hai una sequenza (array) di caratteri '2' '3' '4' e vuoi ottenere un int 234? Allora crea un String dall'array di caratteri e poi usa parseInt() di Integer.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    grazie mille ci provo e ti faccio sapere come è andata

  4. #4
    ciao andbin stavo riguardando il mio codice, so che non è il massimo ma come ti dicevo sono solo agli inizi, non riesco a capire l'errore che mi da, lo inserisco qui cosi magari mi puoi aiutare meglio a capire, grazie ancora per la tua pazienza...

    public class CharToInt{
    public static void main(String[] args){

    char[] ch=Keyboard.leggiCharArray("inserisci un numero qualsiasi: ");
    int i;
    for(i=0;i<ch.length;i++)System.out.print(ch[i]);
    i=ch.length;
    int molt=1;
    int app,app2;

    while(i>=0){

    app=(int)(ch[i]*molt);
    app2=ch[i]+app;
    molt*=10;
    i--;
    }

    //stampa
    System.out.println();
    System.out.println(ch[i]);
    }
    }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da dom.vecchioni
    non riesco a capire l'errore che mi da
    Viene lanciata l'eccezione ArrayIndexOutOfBoundsException. Perché hai messo inizialmente i=ch.length e l'errore è dovuto appunto al fatto che l'indice ch.length non esiste. In un array gli indici vanno sempre da 0 a arr.length-1.

    A parte questa questione dell'indice, l'algoritmo che hai usato non è nemmeno il più "pratico". Partire dalla cifra meno significativa è più scomodo e laborioso. Dovresti partire dalla cifra più significativa, che è molto più semplice.

    Mi spiego meglio, hai i caratteri 2 3 4.

    inizialmente metti
    value = 0

    cifra '2'
    value = 0*10 + 2 = 2

    cifra '3'
    value = 2*10 + 3 = 23

    ecc....

    Devi solo moltiplicare per 10 il value e addizionare il valore della cifra. Tutto qua.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    ciao andbin

    scusa per il ritardo nella risposta,
    ho fatto come mi hai detto tu ma mi trovo difronte ad un altro problema,
    il progtamma mi entra nel ciclo e non esce +,
    e non capisco perchè?
    stavolta pensavo che funzionasse invece.....

    il problema è che io i valori char li leggo da tastiera ossia li inserisce l'utente...booooo....

    public class CharToInt{
    public static void main(String[] args){

    char[] ch=Keyboard.leggiCharArray("inserisci un numero qualsiasi: ");
    int i=0;
    /*for(i=0;i<ch.length;i++){
    System.out.print("'");
    System.out.print(ch[i]);
    System.out.print("'");
    }*/


    i=0;
    int val=0;
    while(i<ch.length-1){

    val=val*10+ch[i];
    }

    //stampa
    System.out.println();
    System.out.println(val);
    }
    }

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da dom.vecchioni
    i=0;
    int val=0;
    while(i<ch.length-1){

    val=val*10+ch[i];
    }
    Innanzitutto manca l'incremento di 'i' (ecco perché va in loop infinito). Come seconda cosa, tu sommi semplicemente il valore di ch[i], in pratica il valore del char. Ma così stai sommando il codice Unicode del char!! Se il char è '0' tu sommi 48 perché appunto il codice Unicode (ASCII) di '0' è 48 (0030h).
    Come terza cosa, la condizione del while l'hai messa in modo che esclude l'ultimo carattere. Mettendo i<ch.length-1 non prendi l'ultimo carattere, appena i diventa length-1 (l'ultimo carattere appunto) esce. Quindi o metti i<=ch.length-1 o metti i<ch.length.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    quindi al posto della somma ch[i], io devo mettere il primo valore char, come faccio a dirgli quel valore? invece che quello ASCII?
    scusa per tutte queste domande ma penso che gli inizi siano un poco spigolosi per tutti vero?
    grazie ancora..

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da dom.vecchioni
    quindi al posto della somma ch[i], io devo mettere il primo valore char, come faccio a dirgli quel valore? invece che quello ASCII?
    Le cifre decimali in ASCII hanno il codice da 48 a 57 (30h ... 39h). Quindi è sufficiente sottrarre 48 per avere il valore del digit.

    È chiaro che in input l'utente dovrebbe inserire solo digit ma ... che succede se vengono inseriti altri caratteri? Il tuo sistema di conversione dovrebbe essere abbastanza "robusto" da gestire questa situazione. In tal senso, sarebbe più appropriato realizzare un metodo che effettua questa conversione da char[] a int e controllando che ogni carattere sia nel range sopra citato e se non lo è dovrebbe lanciare una eccezione (sarebbe appropriato un NumberFormatException, che è poi quello che lancia parseInt()).

    Poi comunque bisogna anche vedere il formato del numero. Ad esempio, vuoi poter accettare anche numeri negativi?? Vuoi poter accettare spazi a sinistra/destra del numero?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    ho capito di che parli ma non sono ancora in grado di fare queste cose anche perchè non le conosco...
    sono un paio di mesi che frequento un corso e quindi ancora no so praticamente niente di java
    il programma deve essere appropriato per le mie conoscenze anche perchè penso che andare + avanti con le istruzioni ma senza sapere che fanno sia un contro e non un pro, comunque io ci provo e poi vediamo...
    grazie

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.