问题描述
我有 3 个文件, "MyFile" , "myOtherFile" , "yetAnotherFile" 我的代码将从中绘制单词以将它们放入数组中,检查它们是否以大写开头,如果是,它也会排序他们按字母顺序排列。 所有 3 个都有 3 个或更多单词,一个只有一个以小写字母开头的单词,因此我可以测试无效的输入打印行
我以某种方式让所有 3 个打印无效行
添加了一个计数器,因此如果 counter > 0 则执行打印语句
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.*;
public class StringSorter {
private String inputFileName;
//private String line;
public StringSorter(String fileName) {
inputFileName = fileName;
}
public void sortStrings() throws IOException {
FileReader input = new FileReader(inputFileName);
BufferedReader myReader = new BufferedReader(input);
String line, data = "";
String[] words;
int posCount = 0;
while ((line = myReader.readLine()) != null)
data += line;
words = data.split(",");
for(int posi = 0; posi < words.length; posi++) {
if(!Character.isUpperCase(words[posi].charAt(0))) {
posCount++;
}
}
if(posCount > 0) {
System.out.print("Invalid input. Word found which does not start with an uppercase letter.");
}
else {
for (int k = 0; k < words.length; k++) {
for (int i = k - 1; i >= 0; i--) {
if (words[i].charAt(0) < words[k].charAt(0)) {
String temp = words[k];
words[k] = words[i];
words[i] = temp;
k = i;
}
}
}
for(int print = 0; print < words.length - 1; print++){
System.out.print(words[print].trim() + ", ");
}
System.out.print(words[words.length-1]);
}
input.close();
myReader.close();
}
}
import java.io.*;
public class TestStringSorter {
public static void main(String[] args) throws IOException {
StringSorter sorterA = new StringSorter("MyFile.txt");
sorterA.sortStrings();
StringSorter sorterB = new StringSorter("myOtherFile.txt");
sorterB.sortStrings();
StringSorter sorterC = new StringSorter("yetAnotherFile.txt");
sorterC.sortStrings();
}
}
Invalid input. Word found which does not start with an uppercase letter.
输入无效。 找到不以大写字母开头的单词。 输入无效。 找到不以大写字母开头的单词。
1楼
我明白可能是什么问题。 您在 ',' 上拆分,但逗号后有空格。 所以你会有一个像“Dog”这样的“单词”,如果你测试它的第一个字符,你会失败,因为空格不是大写字母。
尝试拆分:
words = data.split("[,\\s]+");
这将解决数据中的空格问题。
我看到另一个问题可能会导致您无法获得预期的结果。 您将多行连接在一起,但不在行之间放置任何内容,因此一行的最后一个单词将与下一行的第一个单词组合。 将它们连接在一起时,您可能希望在每行之间放置一个“,”。
我猜你想写自己的排序。 我会把它留给你或其他人来调试。 但你可以:
Arrays.sort(words)
2楼
也许您在每个单词之前放置一个空格,这就是您要检查它是否为大写的内容...