[英]Using Dr.Java, why does ♂ equal something different in the interaction pane than when programmed
使用以下代码时
int count = 0;
while(count != '♂'){
count++;
}
System.out.print(count);
在dr java的“交互”窗格中,它等于正确的unicode号(9794),但是在编程窗格中完成操作时,它使用完全相同的代码返回63。
这是为什么 ?
这变得越来越复杂,
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
int count = 0;
String letter = scan.next();
输入是♂
while(count != letter.charAt(0)){
count++;
}
它返回66,并且在编程窗格中相同,
字符编码取决于系统。 根据您的盒子的不同,它可能会打印UTF-16编码的16位(即9794),高8位(即38)或低8位(即66)。
您使用的工具似乎有问题,这可能是停止使用它们的好理由:-)
男性符号U+2642
(请参见此处 )具有0x42作为最后一个八位位组(从0x26 0x42
),十进制为66
( 4 x 16 + 2
)。
在编程窗格中完成时,它使用完全相同的代码返回63。
字符63是问号?
。 当无法使用您要写入的编码形式写入您曾经使用过的字符时,它用作占位符。
我假设“编程窗格”是指主要的源代码编辑器。 此内容在编译之前已保存到文件,因此必须使用特定的编码保存。 不幸的是,DrJava似乎不提供将文件另存为系统默认代码页以外的任何选项的选项,在您的情况下可能是Windows代码页1252。此编码不包含字符♂
,因此被替换为?
。
因此,在您当前的工作流程中,您将不得不使用纯ASCII源,因此,您会说:
while (count != '\u2642') { ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.