繁体   English   中英

使用Dr.Java,为什么在交互窗格中与编程时的♂有所不同

[英]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)。

  • 9794/256 = 38
  • 9794%256 = 66

您使用的工具似乎有问题,这可能是停止使用它们的好理由:-)

男性符号U+2642 (请参见此处 )具有0x42作为最后一个八位位组(从0x26 0x42 ),十进制为664 x 16 + 2 )。

在编程窗格中完成时,它使用完全相同的代码返回63。

字符63是问号? 当无法使用您要写入的编码形式写入您曾经使用过的字符时,它用作占位符。

我假设“编程窗格”是指主要的源代码编辑器。 此内容在编译之前已保存到文件,因此必须使用特定的编码保存。 不幸的是,DrJava似乎不提供将文件另存为系统默认代码页以外的任何选项的选项,在您的情况下可能是Windows代码页1252。此编码不包含字符 ,因此被替换为?

因此,在您当前的工作流程中,您将不得不使用纯ASCII源,因此,您会说:

while (count != '\u2642') { ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM