[英]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.