gpt4 book ai didi

java - 需要使用Scanner读取文件但不知道如何比较

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:25 25 4
gpt4 key购买 nike

我正在尝试编写一种方法,使用扫描仪读取文本文件,然后比较它们以查看它们是否是字符('a' - 'z'),但是不能使用二进制运算符(编译错误)。有什么想法可以解决这个问题吗?

我需要将大写字母转换为小写字母,并且我有一个计数器来跟踪每个字母在文本文件中出现的次数。

我还需要忽略文本文件中的任何符号和数字。

<小时/>

阅读您的评论后,我将代码更改为:

import java.util.Scanner;

public class LetterInventory {
int counter = 0;
private int[] inventory;

char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();

public LetterInventory () {
inventory = new int[26];
}

public void countOccurrences(Scanner file) {
while (file.hasNextLine()) {
// Read line by line and make it lowercase
String line = file.nextLine().toLowerCase();

// get all the character of the line
for (char c :line.toCharArray()) {
if (c >= 'a' && c <= 'z'){ // Check for character only
counter++;
}
}
}
}

public void displayTable () {
for (int i = 0; i < alphabet.length; i++) {
System.out.println(alphabet[i] + ": " + inventory[i]);
}
}

public void resetInventory () {
counter = 0;
}

我仍然不太确定如何让这个东西发挥作用。该程序应该能够读取文本文件,对读取的每个字母进行计数,忽略任何符号/数字,并输出一个表格,其中每个字母后跟它们在文本文件中出现的次数。

最佳答案

正如评论中所指出的,您的代码存在一些问题。第一:每次调用 file.next() 时,它都会尝试读取下一个字符。所以你在循环中要做的是:读取所有字符,转换为小写,但忽略这个新值并继续。

编译问题是由于您尝试将字符串与字符进行比较而导致的。

你想做的是这样的:

while(file.hasNext())
{
String currentTokes = file.next().toLowerCase(); //save the current token as lower text in the variable
//check each character of the string
for(char c : currentToken.toCharArray())
{
if(c <= ....) //check etc.
}

}

另一种方法是使用正则表达式。

关于java - 需要使用Scanner读取文件但不知道如何比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23727346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com