在文件读取中使用 for 循环比 while 循环有优势吗?

Is there an advantage to using a for-loop over a while-loop in file reading?

在做一些文件读取的练习题时,我遇到了一个问题。这个问题的性质要求我阅读文件并可能中途停止。想出一个解决方案后,我又想到了另一个,想知道哪个效率更高-(这里的文件类型为java.util.Scanner)-

While 循环

// create default values
byte loops = 0, sum= 0;
// loop while there is data and a non-negative sum 
while(file.hasNextInt() && sum >= 0)
{
    sum += file.nextInt();
    loops++;
}

For 循环

// create default values
byte loops = 0, sum = 0; 
// loop while there is data and a non-negative sum 
for(;file.hasNextInt() && sum >= 0;
    sum += file.nextInt(), loops++);

#编辑深度# 目标:打印负和和达到或声明它具有正和所需的循环数。

这些实际上是一样的。你会发现很多事情可以用不同的方式来完成,有时甚至是截然不同的方式。在这种情况下,我倾向于使用对必须处理它的人来说更容易的代码:我和我的同事。就个人而言,我发现 while 循环更具可读性。随着时间的推移,您不会遗漏部分结构或以独特的方式使用它们,就像您使用 for 循环一样。

我唯一关心的效率问题是您使用 byte 作为变量的类型。我对文件的大小或其中的数字一无所知,因此您很可能会溢出或下溢一个字节。特别是在 Java 中,其中一个字节被签名。

如果您要使用 for 循环方法,至少将“工作”放在循环体内:

// create default values
byte loops = 0, sum = 0; 
// loop while there is data and a negative sum 
for(;file.hasNextInt() && sum >= 0; loops++) {
    sum += file.nextInt();
}

不过,就我个人而言,我会改用 while 方法,因为您没有初始化任何变量并使用它们的状态来控制 for 循环,并且正在使用正在计算的值for 循环之外。