在做一些檔案閱讀練習題時,我遇到了一個問題。這個問題的性質要求我閱讀檔案并可能在中途停下來。在提出一種解決方案后,我想到了另一種解決方案,想知道哪個更有效-(檔案型別為 java.util.Scanner 這里)-
回圈
// 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# 目標:列印負和以及達到或宣告它具有正和所需的回圈數。
uj5u.com熱心網友回復:
這些幾乎是一樣的。你會發現很多事情可以用不同的方式完成,有時甚至是截然不同的方式。在這種情況下,我傾向于傾向于那些對必須處理它的人來說更容易的代碼:我和我的同事。就個人而言,我發現 while 回圈更具可讀性。在 while 中,您不會遺漏結構的某些部分或以獨特的方式使用它們,就像使用 for 回圈一樣。
我唯一的效率問題是您將byte其用作變數的型別。我對檔案的大小或其中的數字一無所知,因此您似乎很有可能溢位或下溢一個位元組。特別是在一個位元組被簽名的Java中。
uj5u.com熱心網友回復:
如果您要使用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回圈之外使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/450058.html
