java - 有没有比(1)…休息时更干净的方法?

标签 java

此应用程序匹配两个单词列表,一个在字典文件中,一个由应用程序在TreeSet中生成。也许有更好的方法可以做到这一点,但这超出了这个问题的范围-我们使用的方法是从文件中读取一行,从TreeSet中读取一行,比较它们,然后

如果TreeSet行等于文件行,则保存

如果TreeSet行>文件行,则从文件中读取一行

如果文件行> TreeSet行,则从TreeSet读取一行

用伪代码:

while (1) {
    String dict = reader.readLine();
    if (dict == null || !TreeIterator.hasNext()) break;
    if (dict.equals(TreeIterator.next())...save
    elseif > .... read tree
    elseif < .... read file
}


虽然在(1)中使用它似乎并不正确,但是我没有找到一种表达这种双重条件的更简洁的方法。
无法读取while条件内的两个字符串,是吗?
是否有可能保持这种方法的简单性(不再混乱),同时又失去了奇怪的while(1)?

最好的祝福。

最佳答案

首先,while(1)在Java中无效。您需要while(true)。我个人倾向于将其处理为:

String line;
while ((line = reader.readLine()) != null && TreeIterator.hasNext())
{
    ...
}


尽管我通常不喜欢这种情况下的副作用,但是这种“获取下一个并检查它是否确实存在”的方法非常普遍,以至于正常的可读性并不是IME的问题。

关于java - 有没有比(1)…休息时更干净的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12161702/

相关文章:

java - 带有 JWT 响应的登录请求

java - 如何在Java spring Controller 中获取XML

java - 如何将回历日期转换为公历日期,反之亦然

java - 无法通过 AssetManager - libgdx 从 zip 存档加载 TextureAtlas

java - 选择列表显示错误属性 'name' 在类型 java.lang.String 上找不到

java - evictAll 和刷新之间的区别

java - 如何读取 java.util.InputMismatchException 堆栈跟踪

java - 我以正确的方式编写这个方法吗?

java - 在 Netbeans 中添加监听器

java - "Could not find the main class. The program will exit"