[英]Java - reading wrong characters from file
我想編寫一個程序,該程序逐個字符地從文件中讀取文本,並計算每個字符出現的頻率。
我有以下代碼:
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++;
}
這一次讀取一個令牌 ,並從該令牌中獲取第k
個字符。 因此,它從“早安”中檢索“ Good”( G
)的字符0和“ Morning”( o
)的字符1。
目前尚不清楚為什么你有k
可言,要誠實-但如果你只是想文件讀入一個字符數組,它采用了一塊值得Reader
,而不是-或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();
(這將跳過換行符,但這可能就是您想要的。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.