Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    problema conversione char

    Ciao ho un problemino con i char....fare la diffrenza di tra 2 char vuol dire sottrarre i lore valori ascii..fin qui ok..ma se sottraggo un char ed un char,sotto forma di numero(es:'0' zero) perchè non mi riconosce il carattere?
    cioè se ho:

    codice:
    class Caratteri{
        int carattereprova(char ch){
    return ch - '0';   //ch-zero
      }
    public static void main(String[] args){
        Caratteri h=new Caratteri();
        System.out.println(Character.getNumericValue('Z'));  //output:35
        System.out.println(Character.getNumericValue('0')); //output:0
        int carattere=h.carattereprova('Z');
        System.out.println(carattere);  //output:42   ????
         System.out.println(Character.toChars(carattere));  //output:*  ?????
    
    }
    }
    i primi 2 output mi vengono 35 e 0...ma poi perchè il terzo output mi viene 42 ed il quarto *?È come se non riconoscesse il carattere zero e non riuscisse a convertore il risultato in char.Perhè?
    Ultima modifica di el92; 30-01-2016 a 13:16

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da el92 Visualizza il messaggio
    Ciao ho un problemino con i char....fare la diffrenza di tra 2 char vuol dire sottrarre i lore valori ascii..fin qui ok..ma se sottraggo un char ed un char,sotto forma di numero(es:'0' zero) perchè non mi riconosce il carattere?

    i primi 2 output mi vengono 35 e 0...ma poi perchè il terzo output mi viene 42 ed il quarto *?È come se non riconoscesse il carattere zero e non riuscisse a convertore il risultato in char.Perhè?
    I caratteri '0' '1' ... '9' hanno codice 48, 49 ... 57

    getNumericValue (sia nella versione con char che con int codepoint) fornisce (se possibile) il valore numerico rappresentato da un qualunque carattere Unicode. E non vale solo per le cifre decimali ASCII. Ad esempio il carattere ۹ (codice Unicode U+06F9) è un carattere Arabo che vale 9 come indicato anche da getNumericValue. Inoltre getNumericValue considera A-Z come numeri 10...35.

    h.carattereprova('Z') fa 90 (codice di 'Z') meno 48 (codice di '0') = 42

    E il codepoint 42 passato a toChars dà un array che contiene il carattere * perché 42 è il suo codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.