[英]Is there an advantage to using a for-loop over a while-loop in file reading?
在做一些文件讀取的練習題時,我遇到了一個問題。 這個問題的性質要求我閱讀文件並可能中途停止。 在想出了一個解決方案之后,我想到了另一個,想知道哪個會更有效率-(文件類型為 java.util.Scanner here)-
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++);
#EDIT for depth# 目標:打印負和和達到它所花費的循環數或 state 它有一個正和。
這些實際上是相同的。 你會發現很多事情可以用不同的方式來完成,有時甚至是截然不同的方式。 在這種情況下,我傾向於使用對必須處理它的人來說更容易的代碼:我和我的同事。 就個人而言,我發現 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
方法,因為您沒有初始化任何變量並使用它們的 state 來控制for
循環,並且正在計算的值也在for
循環之外使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.