求教一个JAVA题!

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:16:49
1.编写一个程序,从键盘接收一个十六进制的两位数,并将其转换为对应的ASCII字符在显示器上输出。提示:字符’a’的十六进制的ASCII码为0x61,ASCII码字符表参见;利用System.in.read()方法从键盘接收两位数。
整个题就是这样了!
我是初学者,这是我们平时作业的一道题,麻烦JAVA前辈们教下怎么写,我想了很久都写不出来,谢谢了!
另外付我自己写的(肯定错了,麻烦告诉下我错在哪里?)谢谢!:
import java.io.*;
class exercise3_3{
public static void main(String args[])throws IOException{
char c;
int x,y;
System.out.println("请输入一个2位的16进制数字:");
x=System.in.read();
y=System.in.read();
if(y>=48&&y<=57)
c=(char)(x+y-6);
if(y>=65&&y<=70||y>=97&&y<=102)
c=(char)(x+y-13);
else
System.out.println("输入错误!");
System.out.println("对应的ASCII字符为:"+c);
}
}
PS:编译后显示可能尚未初始化变量c

回答一楼的朋友,谢谢你帮我解决掉了“编译后显示可能尚未初始化变量c ”的问题,但是这个答案依旧是错的啊,比如我输入4E,应该是显示N,但是却显示出L,不信你可以自己试试!!

//输入0-9的都没有问题,不能输入a-f的,显示?
//可以输入A-F,注意大写
import java.io.*;

public class exercise3_3 {
public static void main(String args[]) throws IOException {
char c = '\0';
int x, y;
System.out.println("请输入一个2位的16进制数字:");
x = System.in.read();
y = System.in.read();
if (y >= 48 && y <= 57)
c = (char) (x + y - 6);
else if (y >= 65 && y <= 70 || y >= 97 && y <= 102)
c = (char) (x + y - 13);
else
System.out.println("输入错误!");
System.out.println("对应的ASCII字符为:" + c);
}
}

这个同学态度很好。虽然也是求题目。但自己动手了,而且不是简单的要答案。值得表扬。

就这点,我也要帮你。

编译后显示可能尚未初始化变量c: 因为你的if 流程里,如果到了最后一个else,c就是没有初始化的。

提示:
char ch = (char)Integer.valueOf("4A",16);

很久没写这个东西了。有可能有写错的。但Integer.valueOf 没错。

不过,初学的话不建议你用上面的方法。建议你自己处理输入的两个字符,按16进制的算法转成10进制,然后强制转换成char

C没有赋初值吧~