【问题标题】:How to look at a txt file for upper and lowercase? Java如何查看大写和小写的txt文件?爪哇
【发布时间】:2016-01-16 15:01:51
【问题描述】:

我试图让我的代码读取一个 txt 文件,然后吐出某个字符出现了多少次。

所以如果txt文件读取。

“我的我,你多大了?”

如果我输入 m,我需要它吐出 3,但使用下面的代码,我一直得到 1。它不会读取大写字母。请帮忙?

public static void main(String[] args) throws IOException {

    String fileName;
    String inputLetter;
    int count = 0;



    fileName = JOptionPane.showInputDialog("Enter the filename: ");

    inputLetter = JOptionPane.showInputDialog("Enter a letter contained " +
            "in a string.");
    inputLetter.toLowerCase();
    char letterAsChar = inputLetter.charAt(0);

    File file = new File(fileName);
    Scanner inputFile = new Scanner(file);




    while (inputFile.hasNext())
    {
        String holdLine = inputFile.nextLine();
        for (int i = 0; i < holdLine.length(); i++)

        if (holdLine.charAt(i) == letterAsChar ||
        holdLine.charAt(i) == Character.toUpperCase(letterAsChar))
        {
            count++;
        }
    }


    System.out.println(count);

【问题讨论】:

  • 小创意循环使用lcase和ucase变量,inputlc=inputletter.toLowerCase().charAt(0); inputuc=inputletter.toUpperCase().charAt(0);
  • 我试过你的例子,我得到的结果是3。你确定程序有问题?

标签: java file char


【解决方案1】:

这样做

Character.toUpperCase(holdLine.charAt(i)))==Character.toUpperCase(letterAsChar))

比较两边小写或大写

【讨论】:

    【解决方案2】:

    方法 toLowerCase 和朋友返回一个字符串,所以你必须始终保存结果:

     inputLetter = inputLetter.toLowerCase();
    

    最好将整行转换为更简单的处理:

     String holdLine = inputFile.nextLine().toLowerCase();
    
    if (holdLine.charAt(i) == letterAsChar){
        count++;
    }
    

    【讨论】:

    • 效果很好。太感谢了。只是为了确保我理解,这仅有效,因为我强制输入为小写,并且每次从 inputFile 读取的一行在 if 语句之前立即变为小写。
    • 正确。 - 除了不存储方法调用的结果之外,您的版本也可以正常工作,但是对整个字符串进行一次转换调用比零敲碎打更有效。
    猜你喜欢
    • 2014-03-13
    • 2020-08-06
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多