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

    [java]sottrazione di char

    Ciao ho trovato su un sito,un esempio del calcolo delle occorrenze presenti in una stringa:

    codice:
    import java.util.*;
    class Caratteri{
    public static int[] cercaratteri(String s){
    int caratteri[]=new int[26];
    for(int pos=0;pos<s.length();pos++){
    char e=s.charAt(pos);
    caratteri[e-'a']++;
    }
    return caratteri;
    }
    public static void main(String[] args){
    System.out.println(Arrays.toString(cercaratteri("elena")));
    }
    }
    in pratica costruisce un array di 26 caratteri,contenente per default tutti 0... quello che non mi è chiaro è perchè nell''array caratteri si sottrae e-'a'...cioè caratteri[e] non è la stessa cosa?poi se tolgo il char 'a' dall'array mi dà errore perchè?
    Ultima modifica di el92; 26-05-2015 a 10:34

  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
    non mi è chiaro è perchè nell''array caratteri si sottrae e-'a'...cioè caratteri[e] non è la stessa cosa?poi se tolgo il char 'a' dall'array mi dà errore perchè?
    L'array caratteri contiene dei "contatori", uno per ciascuna lettera. Ci sono 26 elementi, corrispondenti appunto alle 26 lettere (inglesi). Pertanto la "a" corrisponde all'indice 0, "b" al 1, ecc....

    Se un carattere nella stringa s è es. 'd', esso ha valore 100 (codice ASCII). Quindi non lo puoi utilizzare certo come indice. Ma sottraendo 'a' (97) si ottiene 3 quindi incrementerà il contatore all'indice 3 che corrisponde idealmente appunto alla 4° lettera dell'alfabeto (d).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177
    ciao grazie 1000 sei stato chiarissimo

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.