Janhua_Zheng 2020-03-24 14:14 采纳率: 0%
浏览 78

调用其他类时不能识别中文正则表达式。

做了Console类(控制台)和Add类(添加到文件),Add类里将键入的汉字追加到ArrayList,然后输出到txt,用utf-8编码,这个类运行操作都没问题,可是用Console类调用Add类时,键入的汉字却不被识别了,为什么呢?

以下是部分代码

Add类的识别汉字的代码

public static boolean rules(String newXingShi) {
        boolean flag = newXingShi.matches("[\\u4e00-\\u9fa5]{1,4}");
        if (flag == true) {
            return true;
        } else {
            System.out.println("输入不符合规范,添加失败!");
            return false;
        }

    }

Add类运行主方法结果

请输入要添加的:

添加成功!

Console类调用Add类

AddXingShi.main(null);

运行结果

请输入要添加的:

输入不符合规范,添加失败!

请问这个是什么问题?

  • 写回答

1条回答

  • 程序员Ale-阿乐 2023-08-17 16:31
    关注

    根据您提供的代码和描述,问题可能出现在字符编码上。您描述的现象表明在Console类中键入的汉字在传递给Add类之后无法被正确识别。这可能与字符编码不一致有关。
    在Java中,默认的字符编码是UTF-8,但有时在控制台中输入时可能会有不同的编码。您可以尝试以下方法来解决这个问题:

    1、指定控制台编码: 在您的Console类中,尝试使用System.in的Scanner对象来读取用户输入,并指定正确的编码。例如:

    Scanner scanner = new Scanner(System.in, "UTF-8");
    

    这将确保控制台输入以UTF-8编码进行读取。

    2、调整IDE或终端的编码设置: 如果您使用的是某个集成开发环境(IDE)或终端,您可以尝试调整其字符编码设置,确保输入和输出的字符编码一致。

    3、使用InputStreamReader: 在Console类中,您可以使用InputStreamReader来将System.in的字节流转换为字符流,并使用正确的编码进行处理。例如:

    InputStreamReader isr = new InputStreamReader(System.in, "UTF-8");
    BufferedReader reader = new BufferedReader(isr);
    String input = reader.readLine();
    

    这样,您可以确保从控制台读取的字符被正确地解析为UTF-8编码。

    确保在Console类和Add类之间的数据传递中,字符编码始终保持一致。这样可以避免字符乱码问题。如果问题仍然存在,您可能需要深入调查控制台输入和输出的编码设置以及数据传递的细节。

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?