我有50个不同长度和内容的字符串行的文本文件。我需要读取文件并按升序排序。 排序条件:句子中以字母“a”开头的单词数
public static void main(String[] args) throws FileNotFoundException {
String token1 = "";
Scanner inFile1 = new Scanner(new File("E:\\text.txt"));
List<String> temps = new LinkedList<String>();
inFile1.useDelimiter(". ");
while (inFile1.hasNext()) {
token1 = inFile1.nextLine();
temps.add(token1);
}
inFile1.close();
String[] tempsArray = temps.toArray(new String[0]);
for (int i = 0; i < tempsArray.length; i++) {
System.out.println(tempsArray[i]);
}
int cnt = 0; //counts of words in the string line
for (int i=0; i<tempsArray.length; i++) {
int k=0; //counts of words that start from the letter "а"
System.out.println("Line № = " + i);
StringTokenizer st = new StringTokenizer(tempsArray[i]);
while (st.hasMoreTokens()) {
cnt++;
String s= st.nextToken();
if (s.charAt(0)=='a') {
k++;
}
}
System.out.println("Words count = " + cnt);
cnt=0;
System.out.println("Words 'а' = " + k);
}
}
新问题:如何通过 k 来排序字符串行?该代码后我还应该做些什么?
答案 0 :(得分:1)
您可以使用this code进行shell排序,它可以同时使用数字和字符串。首先,您需要将所有字符串存储在数组中。
在我给出的引用中,您应该使用类似下面的代码更改main方法,以从文件中读取输入并存储在数组中。
String token1 = "";
// create Scanner inFile1
Scanner inFile1 = new Scanner(new File("YourFilenNme"));
List<String> temps = new LinkedList<String>();
while (inFile1.hasNext()) {
// find next line
token1 = inFile1.next();
temps.add(token1);
}
inFile1.close();
String[] tempsArray = temps.toArray(new String[0]);
Shell.sort(tempsArray);
show(tempsArray);
编辑:
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
String s= st.nextToken();
if (s.charAt(0)=='a')
{
"do what you want here"
}
}