Java 在使用扫描仪读取的文件中查找按字母顺序排列的最后一个单词

Java 在使用扫描仪读取的文件中查找按字母顺序排列的最后一个单词,java,Java,我正在做一项作业,在作业中,我必须找到使用扫描仪读取的文件中按字母顺序排列的最后一个单词。我查找的大多数示例都建议使用数组或ArrayList,但我不能在这部分中使用数组或ArrayList,所以集合是不可能的。所以我一直在尝试使用compareTo以字典顺序比较字符串。到目前为止,我有一些类似于: while (read.hasNext()) { String s = read.next().toLowerCase(); } String lastWord = ""; whi

我正在做一项作业,在作业中,我必须找到使用扫描仪读取的文件中按字母顺序排列的最后一个单词。我查找的大多数示例都建议使用数组或ArrayList,但我不能在这部分中使用数组或ArrayList,所以集合是不可能的。所以我一直在尝试使用compareTo以字典顺序比较字符串。到目前为止,我有一些类似于:

while (read.hasNext()) {
    String s = read.next().toLowerCase();
    }
String lastWord = "";
while (read.hasNext()) {
    String s = read.next().toLowerCase();
    if (lastWord.compareTo(s) < 0)
        lastWord = s;
}
现在我的问题是,在这种情况下,我将如何实现与进行比较?我试着做一些类似的事情

 if (string1.compareTo(string2) < 0) {
     lastWord = string1
}
但是我很难创建两个不同的字符串来进行比较。任何想法或提示都会非常有用。

您可以使用。根据文件,您必须小心:

请注意,此方法不考虑区域设置,并且会导致某些区域设置的排序不令人满意


如果区域设置比较重要。在while循环进行时进行迭代,运行比较,如果它大于零,则这将是当前按字母顺序排列的最后一个单词。将其保存到最后一个字。

可能类似于:

while (read.hasNext()) {
    String s = read.next().toLowerCase();
    }
String lastWord = "";
while (read.hasNext()) {
    String s = read.next().toLowerCase();
    if (lastWord.compareTo(s) < 0)
        lastWord = s;
}
或者考虑@Ulvon的建议,您可以保持字符串不变

String lastWord = "";
while (read.hasNext()) {
    String s = read.next();
    if (lastWord.compareToIgnoreCase(s) < 0)
        lastWord = s;
}
注意:我还没有编译这两种解决方案,因此语法可能不太正确。

您就快到了

我想发表评论,但似乎我没有足够的声誉

你所需要的只是保存一个中性的最后一个字。在迭代文件内容之前

String lastWord = "";
while (read.hasNext()) {
    String s = read.next();
    if (lastWord.compareToIgnoreCase(s) < 0 || lastWord.equals(""))
        lastWord = s;
}

你有什么问题?一个字符串来自文件,另一个字符串是lastWord。最初lastword是空的stringWell,所以我从文件中读取了一堆单词,我需要获取文件中按字母顺序排列的最后一个单词。提示:假设文件中只有一个单词,你会怎么做?然后想象第二个单词被添加到同一个文件中。假设我在while循环外有字符串s,它会给我一个单词。现在,当它在一个循环中时,我可以将它与另一个字符串进行比较。那么,我是否在循环外定义一个空字符串,并将字符串s与该空字符串进行比较?例如“ifs1.compareTempString<0{lastWord=tempstring;}”,这绝对有效。我以前也做过类似的事情,但我没有将lastWord与s进行比较,而是将s与lastWord进行了比较。非常感谢你。