高分求救,关于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解惑,里面关于这种问题讲得很详细.
要不留下邮箱, 给你发一个. 用站内联系
