Java 为什么要进入Î&引用;向扫描仪发送错误的字符?

Java 为什么要进入Î&引用;向扫描仪发送错误的字符?,java,string,java.util.scanner,Java,String,Java.util.scanner,当我这样做的时候 String message="Î" 并取第一个字符的数值,其中: int x=message.charAt(0); 输出为206,这是正确的。但是,如果我向扫描仪输入Î,如下所示: Scanner in=new Scanner(System.in); String message=in.next(); // typing Î 返回的第一个字符的数值: int x=message.charAt(0); 现在是65533,这是错误的 这是完整的代码: System.out

当我这样做的时候

String message="Î"
并取第一个字符的数值,其中:

int x=message.charAt(0);
输出为206,这是正确的。但是,如果我向扫描仪输入
Î
,如下所示:

Scanner in=new Scanner(System.in);
String message=in.next(); // typing Î
返回的第一个字符的数值:

int x=message.charAt(0);
现在是65533,这是错误的

这是完整的代码:

System.out.println("Insert string here:");
Scanner in=new Scanner(System.in);
String s=in.next();
for(int i=0;i<s.length();i++)
{
    System.out.println("Codice carattere:"+(int) s.charAt(i));
}
String s="Î";   
for(int i=0;i<s.length();i++)
{
    System.out.println("Codice carattere:"+(int) s.charAt(i));
}
它输出正确的值


如何使其与
扫描仪一起工作?

值65533是0xFFFD。这是Unicode“替换字符”,用于代替不可表示的字符。它通常显示为“�". 之所以会出现这种情况,可能是因为您的标准输入(键盘?)无法生成字符“Δ。请尝试将此字符放入文本文件,然后将文本文件重定向到标准输入。(确保文本文件不以字节顺序标记开头,如果使用Windows记事本,会出现这种情况。)

你认为另一个人真的能从你写的东西中理解你的问题吗?他想知道为什么当扫描器读取字符并将其存储到字符串中时,
Î
的数值会不同,而不是让字符串从一开始就包含字符。好吧,贴上a,我们将看到。