簡體   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