[英]can't cast int to char with Java
给我分配了一个生成1到26之间的随机数,然后将该数字转换为从'a'到'z'的字母的任务。 随机生成部分看起来不错,但是当我尝试将数字转换为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..
}
}
字符'a'
未编码为1
,而是编码为97
。 您需要在0到25(含)之间的值上加上'a'
以获得预期的结果:
num = 'a'+n.nextInt(26);
您生成的数字介于1到27(含)之间。 如果查看这些字符对应的是什么 ,您会发现它们实际上都不是可打印的。
您应该以+ 'a'
而不是+ 1
来进行计算
n.nextInt(26) + 'a';
这将为您提供正确的偏移量(恰好是97)以查找小写字母。
我不是这里的Java专家,但可能与编码不正确有关吗? 查找UTF-8编码,然后研究类型转换
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.