【发布时间】:2015-11-11 15:29:12
【问题描述】:
这是我们的任务。我们必须使用 while 将 unicode 转换为十进制值。 我对输入使用 switch case,因此很容易划分每个输入,但我现在无法计算所有值的总和。
public class Exercise {
public static void main (String[] args) throws Exception
{
int uni = 0, code = 0, dec=0, sum=0;
System.out.println("Please write a Unicode of the form \\uxxxx");
while ((uni = System.in.read()) != '\n') {
code++;
if (uni!='\\' && code == 1) {
System.out.println("You did not write \\ correctly");
break;
}
if (uni!='u'&&code == 2) {
System.out.println("You did not write u correctly");
return;
}
if(code >=3 && code <=6)
{
if(uni >= '0' && uni <= '9'|| uni >= 'a'&&uni<='f')
{
switch (code) {
case 3:
dec=uni*4096;
break;
case 4:
dec=uni*256;
break;
case 5:
dec=uni*16;
break;
case 6:
dec=uni*1;
break;
default:
Sytem.out.println("Too much values!");
break;
}
sum=sum+dec;
}
else
{
System.out.println("Wrong!!!");
return;
}
}
}
System.out.println(sum);
}
}
一如既往,感谢您的帮助! :)
【问题讨论】:
-
首先,我将创建一个将单个十六进制数字转换为十进制的方法(这种转换目前在您的实现中是错误的)。第二步是认识到每个十六进制数字的价值是下一个数字的 16 倍,因此您可以通过简单的除法得到该值。第三,我会将字符表示为
char类型,而不是int。 -
为什么你不能只做 dec+=unicodeValue(unicode) 并在最后打印出来
-
您尝试将
ints组合回有效字符值的逻辑/数学不正确。您的步骤调试器会告诉您数学错误的地方。
标签: java sum switch-statement case