int i =5;
char c = '0'+5;//可行...char c = '0'+i;//不可行在手机屏幕上输出数字字符(char)Rand.nextInt(10);输出乱码,所以想用用‘0’+的办法...现在转换出问题了SOS

解决方案 »

  1.   

    5是常量,编译器能立马计算出'0'+5的值,并判断其是否在char的取值范围内'0'+i中的i是变量,编译器无法确定结果是否在char的取值范围内
      

  2.   

    用字符串输出
    String s=String.valueOf(Rand.nextInt(10));
      

  3.   

    char c = (char) ('0' + i);
      

  4.   

    二楼说的也对,我再在这说得明白点吧,希望能说到明白:
    你可以这样理解,i 是变量,他可以指向的的类型多,在这里你就应该可以知道,所以不确定,Java就不允许你这样子做,
    我觉得LZ别的应该可以理解了的。
      

  5.   

    int i =5;
    char c = '0'+5;//可行...
     
    char c = '0'+i;//不可行
    对于第一句:‘0’+5是字符‘0’对应的ASCII码值加5,即48+5 = 53,对应字符是‘5’,也可以转换成int型输出53对于第二句:i是int型,字符‘0’与i相加会将‘0’化为其ASCII码值48,再加i,也是53,然后53赋值给 c,但int型不能转型成char型,除非强转,改为char c = (char)(‘0’+i);可行
      

  6.   

    在这补充下,要考虑java的运行机制。char c = '0'+5;能够在程序的编译阶段确定关系,而char c = '0'+i;是在程序的运行阶段确定的。