gpt4 book ai didi

Java - 从文件中读取错误的字符

转载 作者:行者123 更新时间:2023-12-01 21:43:18 26 4
gpt4 key购买 nike

我想编写一个程序,从文件中逐个字符读取文本并计算每个字符出现的频率。

我有以下代码:

import java.util.Scanner;
import java.io.*;

public class text {

public static void frequency (char[] array, int k)
{
int ok=0;
for (char i ='a'; i<='z'; i++)
{
ok=0;
for (int j=0; j<k; j++)
if (i==array[j])
ok++;
if (ok!=0)
{
System.out.println (i + " appears for " + ok + " times");
}
}
}

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

Scanner in = new Scanner(new File("C:\\Users\\Diana\\workspace\\Text\\src\\FileInput"));
char[] array = new char [100];
int k=0;

while (in.hasNext())
{
array[k] = in.next().charAt(k);
k++;
}
for (int i=0; i<k; i++)
System.out.print (array[i]);
in.close();
frequency (array, k);
}
}

问题是它没有从我的文件中读取所有值。例如,如果我有早安,它只会显示Go。你知道我做错了什么吗?

最佳答案

看看你的循环:

while (in.hasNext())
{
array[k] = in.next().charAt(k);
k++;
}

它一次读取一个 token ,并从该 token 中取出第k个字符。因此,它从“Good Morning”中检索“Good”的字符 0 (G) 和“Morning”的字符 1 (o)。

说实话,根本不清楚为什么你有 k - 但如果你只是想将文件读入字符数组,那么值得使用 Reader code> 相反 - 或 Files.readAllLines 如果您使用的是 Java 7 或更高版本。例如:

List<String> lines = Files.readAllLines(Paths.get("FileInput"));
StringBuilder builder = new StringBuilder();
for (String line : lines) {
builder.append(line);
}
char[] array = builder.toString().toCharArray();

(这将跳过换行符,但这可能就是您想要的。)

关于Java - 从文件中读取错误的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27886337/

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