我希望逐个字母顺序操作文本文件。在我的程序中有一种方法我不知道如何开始。我想获得类似的输出:
信件/计数
1 A 6 ***
2 B 8 ****
3 C 6 ***
(等)
6个名字以A开头,8个以B开头,6个以C开头。 然后每2个计数一个'*'。
我的练习题实际上是使用一个包含90000个名字和不同'*'计数的文本文件,但是我的学习非常感谢一个示例代码及其工作原理的解释。
这是我的计划的开始,但就像我说我不知道如何开始这个方法。
import javax.swing.JOptionPane;
import java.io.*;
public class P03Census {
String rec;
int ctr = 0;
public static void main(String[] args)throws IOException {
Object result = JOptionPane.showInputDialog(null, "Enter a file name\n(1990 to 2000)\nadd extension",
"Taylor Daggett", JOptionPane.PLAIN_MESSAGE);
String textDoc = (String) result;
File file = new File(textDoc);
System.out.println("-----------------------------------------------------------------------------------------");
System.out.println("File name: " +
file);
if (!textDoc.endsWith(".txt")) {
System.out.println("Usage: This is not a text file!");
System.exit(0);
} else if (!file.exists()) {
System.out.println("File not found!");
System.exit(0);
}
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String rec;
int lines = 0;
int i;
while((rec = br.readLine()) != null){
lines++;
}
System.out.println("Record count:"+lines);
System.out.println("------------------------------------------------------------------------------------------");
}
}
答案 0 :(得分:1)
这是一个可以执行您想要的算法,它利用了let buttonState: UIButton = UIButton(type: .Custom)
buttonState.setImage(UIImage(named: "Button-State.png")?.imageWithRenderingMode(.AlwaysOriginal), forState: UIControlState.Normal)
buttonState.addTarget(self, action: nil, forControlEvents: .TouchUpInside)
buttonState.frame = CGRectMake(0, 0, 22, 22)
变量作为char
的事实:
int
,您将使用它来计算字母数。 int[] letterCount = new int[26]
循环的主体内部,将字符串while
转换为数组rec
,其中每个元素都是一个名称。如果在输入文件中,名称始终由相同的String[]
分隔(例如,像空格一样),则可以使用char
。 String[] names = rec.split(" ")
循环中浏览names
,并检查每个名称的第一个字母:for
。并使用它在数组char firstLetter = names[i].charAt(0)
中将该字母的数量增加一:letterCount
在循环结束时,letterCount[firstLetter - 'a']++;
应该有正确的计数。 注意如果您的文件包含大写字母,则必须在循环体的开头调用letterCount
,否则在尝试调用{时会出现超出范围的错误{1}},或者如果所有名称都以大写字母开头,则只需替换为rec.toLowerCase()