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

    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
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Somma carattere e intero

    Originariamente inviato da Snakethesniper
    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 +.
    Qui vale la regola del Binary Numeric Promotion.
    Nel tuo caso 'c' è un char e 'num' è un int. Quindi il char viene convertito a int e la somma viene fatta come int.
    Non basta fare il cast di num a char .... per la binary numeric promotion verrebbero comunque entrambi portati a int e il problema lo riavresti lo stesso (perché un int non è assegnabile direttamente a un char).

    Devi fare un cast del risultato finale e siccome il cast è più prioritario dell'operatore + devi fare:

    char d = (char) (c + num);

    E c'è anche una alternativa:

    char d = c;
    d += num;

    L'operatore composto += prevede un cast implicito al tipo del primo operando.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Somma carattere e intero

    Originariamente inviato da andbin
    Qui vale la regola del Binary Numeric Promotion.
    Nel tuo caso 'c' è un char e 'num' è un int. Quindi il char viene convertito a int e la somma viene fatta come int.
    Non basta fare il cast di num a char .... per la binary numeric promotion verrebbero comunque entrambi portati a int e il problema lo riavresti lo stesso (perché un int non è assegnabile direttamente a un char).

    Devi fare un cast del risultato finale e siccome il cast è più prioritario dell'operatore + devi fare:

    char d = (char) (c + num);

    E c'è anche una alternativa:

    char d = c;
    d += num;

    L'operatore composto += prevede un cast implicito al tipo del primo operando.
    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.