不能用Java将int转换为char

时间:2015-11-07 18:57:52

标签: java casting

我获得了一个生成1到26之间随机数的作业,然后将该数字转换为来自' a'到了'。 随机生成部分看起来很好,但是当我尝试将数字转换为char时,我会得到一个空的方形盒子! 那是为什么?

    import java.util.Random;
    public class NumbersToLetters 
    {
        public static void main(String[] args) 
        {
            Random n;
            int num;
            n=new Random();
    //generating a random number from 1 to 26
            num=Math.abs(((n.nextInt())%26)+1); 
    //cast from int to char
            char myChar = (char) num; 
            System.out.println ("Number - " + num); 
            System.out.println ("Char - " + myChar);

   //I'm sure that my answer is right but no matter what I do,
   //it won't output a letter, all I get is a square-like box..
        }
    }

3 个答案:

答案 0 :(得分:2)

字符'a'未编码为1,而是97。您需要将'a'添加到0到25​​(含)之间的值以获得预期结果:

num = 'a'+n.nextInt(26);

答案 1 :(得分:2)

您正在生成1到27(含)之间的数字。如果您查看what those characters correspond to,您会发现其中没有一个实际上是可打印的。

您应该以{{1​​}}代替+ 'a'

进行计算
+ 1

这将为您提供正确的偏移量(恰好是97)以查找小写字母。

答案 2 :(得分:1)

我不是像其他人一样的Java大师,但它可能与未正确编码有关?查找UTF-8编码,只研究类型转换