overview of loops
DESCRIPTION
Overview of Loops. End of File Loop. while ( infile.hasNext ()) // true if more unread data on file { score = infile .nextInt (); // now input is at beginning of loop // actions }. Sentinel-controlled Loop. Sop (“Enter a score (-1 to quit )”); - PowerPoint PPT PresentationTRANSCRIPT
Overview of Loops
End of File Loop
while (infile.hasNext()) // true if more unread data on file{
score = infile.nextInt(); // now input is at beginning of loop
// actions
}
Sentinel-controlled Loop
Sop (“Enter a score (-1 to quit)”);score = kb.nextInt(); // “priming” readwhile (score != -1) // sentinel value is -1{
// actions
Sop (“Enter another score (-1 to quit));score = kb.nextInt(); // remember to read another value at end of
loop}
Count-controlled Loops
int i = 1; // initializationwhile (i <= 10) // test{
Sop ("i = " + i); // action(s)...
i++; // increment}
for ( int i=1; i<=10; i++ ){
Sop ("i = " + i); // action(s)
.
.
.}
When to use while vs for?
while• When you don’t know ahead of
time how many times something needs to happen
for• When you do know ahead of
time how many times something needs to happen• Note: could use while in this situation
but most programmers prefer for
We have 3 files that contain a list of golf scores that we want to average.
golf1.txt
7865827091887568
golf2.txt
7865827091887568-1
golf3.txt
8 7865827091887568
File has scores only File has sentinel value First number in file tells us number of scores on file
golf1.txt (has scores only) – use an “end of file loop”
int score;int total = 0;int numScores = 0;double avg;
while (infile.hasNext()){ score = infile.nextInt(); total = total + score; numScores++;}
avg = (double) total / numScores;SOP (avg);
golf1.txt
7865827091887568
golf2.txt (has sentinel value) – use a “sentinel-controlled loop”
int score;int total = 0;int numScores = 0;double avg;
score = infile.nextInt();while (score != -1){ total = total + score; numScores++; score = infile.nextInt();}
avg = (double) total / numScores;SOP (avg);
golf2.txt
7865827091887568-1
golf3.txt (has number of scores at beginning of file)version 1 – use a “count-controlled” while loop
int score;int total = 0;int numScores;double avg;int count = 0;
numScores = infile.nextInt();while (count < numScores){ score = infile.nextInt(); total = total + score; count++;}
avg = (double) total / numScores;SOP (avg);
golf3.txt
8 7865827091887568
golf3.txt (has number of scores at beginning of file)version 2 – use a “count-controlled” for loop
int score;int total = 0;int numScores;double avg;
numScores = infile.nextInt();for (int i=0; i < numScores; i++){ score = infile.nextInt(); total = total + score;}
avg = (double) total / numScores;SOP (avg);
golf3.txt
8 7865827091887568