提问人:Zabuzard 提问时间:1/13/2023 最后编辑:Zabuzard 更新时间:1/13/2023 访问量:41
无法通过控制台输入下标(System.in 前丢失)
Can not enter subscript via console (lost before System.in)
问:
问题
简而言之,如果您尝试以下代码片段:
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine(); // enter ₂
System.out.println(text); // 2, not ₂
并输入一个下标编号,比如 ,其实是 ,没有下标。₂
text
2
测试
现在,我试图在这里排除一些经典的原因。
印刷?
您也可以比较字符串而不是打印它,它仍然不正确:
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine(); // enter ₂
System.out.println(text.equals("₂")); // false
System.out.println(text.equals("2")); // true
扫描器?
扫描仪能够正确地做到这一点,例如,如果输入为:String
Scanner scanner = new Scanner("₂");
String text = scanner.nextLine();
System.out.println(text); // now prints ₂
System.in?
如果完全分解,问题仍然存在,例如:Scanner
byte[] data = System.in.readAllBytes(); // enter ₂
String text = new String(data, StandardCharsets.UTF_8).trim();
System.out.println(text); // 2, not ₂
编码?
这似乎不是Unicode/编码的一般问题。输入另一个字符(如 🤔 )时,它会按预期工作。
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine(); // enter 🤔
System.out.println(text); // 🤔
假设
似乎下标在控制台输入和 之间丢失了,甚至可能在到达 Java 之前就丢失了。System.in
也许这是我不知道的控制台特定怪癖?我用 VSC 和 Windows CMD (Java 18) 尝试过。
答: 暂无答案
评论