[Java] somma carattere e intero
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 7 di 7

Discussione: [Java] somma carattere e intero

Cambio titolo
  1. #1
    Utente L'avatar di Snakethesniper
    Registrato il
    07-04
    Località
    Milano
    Messaggi
    5.498

    [Java] somma carattere e intero

    Sto facendo un programma in cui devo prendere un carattere e un valore intero e poi sommarli.
    Per esempio se prendo 'a' e poi 1 devo poter fare 'a' + 1 = 'b'.
    Ora, ho scritto : char d = c + num;
    c è il carattere preso da tastiera e num l'intero (sempre preso da tastiera).
    Nel momento in cui compilo mi da errore sul "+" dicendo che è intero e ci si aspetta un char. Ora come risolvo? Ho provato a forzare anche il num in char ma l'errore me lo da sempre sul +. Grazie



  2. #2
    Programmer L'avatar di squallwii
    Registrato il
    01-09
    Messaggi
    18.003
    Citazione Snakethesniper Visualizza Messaggio
    Sto facendo un programma in cui devo prendere un carattere e un valore intero e poi sommarli.
    Per esempio se prendo 'a' e poi 1 devo poter fare 'a' + 1 = 'b'.
    Ora, ho scritto : char d = c + num;
    c è il carattere preso da tastiera e num l'intero (sempre preso da tastiera).
    Nel momento in cui compilo mi da errore sul "+" dicendo che è intero e ci si aspetta un char. Ora come risolvo? Ho provato a forzare anche il num in char ma l'errore me lo da sempre sul +. Grazie
    Probably ti basta il parseInt di Integer.
    Ovviamente ci passi il char.

  3. #3
    l' oscuro nemico L'avatar di morgoth90
    Registrato il
    05-06
    Località
    C LikeLandia
    Messaggi
    2.275
    Citazione squallwii Visualizza Messaggio
    Probably ti basta il parseInt di Integer.
    Ovviamente ci passi il char.
    non credo funzioni, trovandosi una lettera lancerà un eccezione.
    hai provato con un cast?
    char b=(char)((int)'a' + 1);



    ESISTE UN UNICO AMMINISTRATORE


  4. #4
    ~ Over My Head ~ L'avatar di Finalfire
    Registrato il
    06-03
    Località
    Italy
    Messaggi
    5.011
    Quello che vuoi fare non è una somma, ma una traslazione nell'alfabeto {a,...,z}.
    Un po' di sano pseudocodice per far la cosa nel modo più a basso livello possibile:
    Codice:
    // carattere
    c = read(char)
    // numero
    i = read(int)
    
    // abbiamo un vettore contenente le lettere dalla a alla z
    v[] = {a,...,z}
    // cerchiamo la posizione della lettera nel nostro vettore
    p = find(v) in c
    
    // decrementiamo i e aumentiamo p
    while(i)
        p = p+1
        i = i-1
    
    // la nostra nuova lettera sarà v[p]
    stampa(v[p])
    Oppure, in modo molto più semplice, la nuova lettera può essere ottenuta tramite l'operazione modulare
    Codice:
    r =(p + i + 26) % 26
    dove r è la posizione nel nostro alfabeto della lettera che si vuole ottenere; p, i come sopra; 26 è la dimensione del nostro alfabeto (a,...,z = 26 lettere); l'operatore % (modulo) "grossolanamente" restituisce il resto di una divisione.

    Per info: http://it.wikipedia.org/wiki/Cifrario_di_Cesare

  5. #5
    I am a stegosaurus! L'avatar di The_Ed
    Registrato il
    10-02
    Località
    Milanese imbruttito
    Messaggi
    9.963
    Citazione Snakethesniper Visualizza Messaggio
    Sto facendo un programma in cui devo prendere un carattere e un valore intero e poi sommarli.
    Per esempio se prendo 'a' e poi 1 devo poter fare 'a' + 1 = 'b'.
    Ora, ho scritto : char d = c + num;
    c è il carattere preso da tastiera e num l'intero (sempre preso da tastiera).
    Nel momento in cui compilo mi da errore sul "+" dicendo che è intero e ci si aspetta un char. Ora come risolvo? Ho provato a forzare anche il num in char ma l'errore me lo da sempre sul +. Grazie
    Questo perché non sei in C e non si può sommare due char... la soluzione è semplice comunque. Basta castare il char a int, sommare e castare il risultato a char

    Codice:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    public class Prova {
    	public static void main(String[] args) throws Exception {
    		// Oggetto per leggere da console
    		BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
    		
    		while(true) {
    			// Prende una stringa, se viene immesso "quit" esce dal ciclo
    			System.out.print("Give me a string (\"quit\" to exit): ");
    			String str = cin.readLine();
    			
    			if (str.equals("quit"))
    				break;
    
    			// Costruisce una nuova stringa a partire dalla precedente
    			// 
    			String newStr = "";
    			for (int i = 0; i < str.length(); i++)
    				newStr += (char)((int)str.charAt(i) + 1);
    			
    			System.out.println("Output string is: " + strBuilder.toString() + "\n##########################\n");
    		}
    		
    		System.out.println("BYE!");
    	}
    
    }
    L'esempio è esageratamente complicato perché ho il brutto vizio di farmi prendere la mano, l'unica cosa che mi sono evitato è il trattamento delle eccezioni e l'utilizzo dello stringbuilder al posto della concatenazione di stringhe... cmq il succo è la riga in grassetto e sottolineata
    Ultima modifica di The_Ed; 19-11-2009 alle 12:47:27
    juventino, dailyrander, informatico, musicomane, giocatore

  6. #6
    Utente
    Registrato il
    06-11
    Messaggi
    1

    Cool Errore

    C'è l'errore sulla linea della presentazione:
    System.out.println("Output string is: " + strBuilder.toString() + "\n##########################\n");

    strBuilder non esiste!!!

  7. #7
    I am a stegosaurus! L'avatar di The_Ed
    Registrato il
    10-02
    Località
    Milanese imbruttito
    Messaggi
    9.963
    è perché bevo troppa birra e ho eliminato lo string builder solo a metà. Sostituire strBuilder.toString() con newStr
    juventino, dailyrander, informatico, musicomane, giocatore

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •