高分求救,关于byte转换char有关问题

高分求救,关于byte转换char问题packageaddimportjava.io.*/***p Title:addxy /p**p Description:a

高分求救,关于byte转换char问题
package   add;

import   java.io.*;

/**
  *   <p> Title:   addxy </p>
  *
  *   <p> Description:   addxy </p>
  *
  *   <p> Copyright:   Copyright   (c)   2007 </p>
  *
  *   <p> Company:   BNU </p>
  *
  *   @author   苏君福
  *   @version   1.0
  */
public   class   Test_Add   {
        public   Test_Add()   {
        }
        static   int   ARRAY_MAX_VALUE   =   10;
        static   int   ADD_XY_COUNT   =   10000;
        static   int   x,y,z;
        public   static   void   main(String[]   args)   throws   IOException   {
                Test_Add   test_add   =   new   Test_Add();
                for(int   i=0;i <ADD_XY_COUNT;i++){
                        byte[]   number1   =   new   byte[ARRAY_MAX_VALUE];
                        byte[]   number2   =   new   byte[ARRAY_MAX_VALUE];
                        char[]   c   =   new   char[ARRAY_MAX_VALUE];

                        /*   读第一个数   */
                        System.in.read(   number1);
                        c   =   (char)number1;
                        System.out.println( "number1   =   "   +   c);
                        x   =   number1;
                        System.out.println( "x   =   "   +   x);

                        /*   读第二个数   */
                        System.in.read(number2);
                    //     c   =   (char)number2;
                        System.out.println( "number2   =   "   +   c);
                  //       y   =   number2;
                        System.out.println( "y   =   "   +   y);

                        /*   计算X+Y   */
                        AddXY   addxy   =   new   AddXY();
                        z   =   addxy.AddXY(x,   y);


                        System.out.println( "   x   +   y   =   "   +   z);
                }

        }
}


为什么       c   =   (char)number1;
    x   =   number1;
这两行会出现类型错误呢?请教高手!


[解决办法]
首先,那两个东西都是数组类型的,而不是char类型的,即使你真想转换,也应该:
//c = (char[])number1;
可惜的是,这种“类型转换”是无法类型的;数组有点像对象类型,不好这么转换的,“byte[]”和“char[]”既不是内建类型,又没有继承关系,怎么可能这样转换呢?

只能一个一个拷贝了:
for(int i = 0; i < number1.length; ++i) {
c[i] = (char)number1[i];
}
[解决办法]
你的c是和number1都是数组,不能这么赋值.
[解决办法]
看你代码的意思是想从键盘输入字符。
数组是可以这样进行类型转换的。
写了两个类,希望对你有帮助。这是我从键盘获得字符的一般方法:
import java.io.*;
import java.util.Scanner;

class InputTest_1{
public static void main(String[] args) {
try {
int i = System.in.read();

System.out.println( "Your Input is: " + (char)i);
} catch(IOException e){
e.printStackTrace();
}
}
}

如果你是用J2SE5.0 那应该用Scanner,这个类更方便
class InputTest_2{
public static void main(String... args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println( "Your Input is: " + i);
}
}
[解决办法]
字符不能有低的强制转换为高的
[解决办法]
byte[] number1 = new byte[ARRAY_MAX_VALUE];
byte[] number2 = new byte[ARRAY_MAX_VALUE];
char[] c = new char[ARRAY_MAX_VALUE];

number1 , number2 和 c 都是数组

强制转换 c = (char)number1; 是不可能转换的....

(字符) = (char)其他类型 仅对单一字符进行转换
c[i] = (char)number1[i];
x = number1[i];
这样就可以了.............



[解决办法]
1楼似乎已经给出了的说。
[解决办法]
number1[i]=(byte)System.in.read( );
c[i] = (char)number1[i];
System.out.println( "number1 = " + c);
x = number1[i];
System.out.println( "x = " + x);

/* 读第二个数 */
number2[i]=(byte)System.in.read();
c[i] = (char)number2[i];
System.out.println( "number2 = " + c);
y = number2[i];
System.out.println( "y = " + y);
[解决办法]
建议你看看JAVA解惑,里面关于这种问题讲得很详细.

要不留下邮箱, 给你发一个. 用站内联系