我正在开发一个处理句子、单词和标点符号的程序。它删除了句子中多余的空格。
这是我的代码:
import java.util.*;
class Prog10
{
static void main()
{
Scanner sc=new Scanner(System.in);
System.out.print("Enter a sentence:");
String out="";
for(String i:sc.nextLine().split("[\\s]"))
out+=i+(<last-iteration-condition>?"":" "); //Using regex to clean excess spaces
System.out.print(out);
}
}
我想要检测最后一次迭代,除了 boolean 条件之外,不需要添加任何新的代码。 不作为答案也足够了。
最佳答案
无法直接确定它是否是循环的最后一次迭代。
如果您知道正在迭代的数组/Iterable的长度,则可以计算迭代次数,并在知道它是最后一次时执行某些操作,但这在某种程度上违背了增强for循环的要点。
很容易确定它是否是循环的第一次迭代,但是:
boolean isFirstIteration = true;
for (String i : someIterable) {
// Do stuff.
isFirstIteration = false;
}
您可以在您的情况下使用此方法,首先附加空格:
String delim = "";
for(String i:sc.nextLine().split("[\\s]")) {
out += delim + i;
delim = " ";
}
delim
变量最初是空字符串,因此您不会在第一次迭代时插入任何内容。但是,它随后被设置为一个空格,因此在每次后续迭代中都会插入一个空格,然后是您的 i
字符串。
请注意,String.join("", sc.nextLine().split(...))
会更容易。
关于java - 检测 Java 中 for-each 循环的最后一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48879719/