簡體   English   中英

在文件讀取中使用 for 循環比 while 循環有優勢嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM