Reputation: 59
Basically I am trying to write a program that will read a finite set of values from the user then print the average. (I know how to do the calculations so I will leave those out.)
I am having a problem with the logic side of the loop.
I understand that everyone here would prefer that I attempted it but I am new to loops and I am having extreme difficulties understanding loop logic.
I am attempting to do this assignment for my class but the teacher is flying through material and does not help at all when questions are asked. When I ask for help with a problem he says do your best to attempt it and I will grade it accordingly?
I honestly do not know where to start.
import java.util.Scanner;
public class P4Point5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String Status = "";
int count = 0;
while (in.hasNext()) {
count++;
}
for (int i = 0; i < count; i++) {
//Do calculations here?
}
}
}
Upvotes: 1
Views: 122
Reputation: 31225
You never get the next element:
while (in.hasNext())
count++;
You are always on the 1st element and asking if there is a 2nd element.
You should use:
while (in.hasNext())
int next = sc.nextInt();
BTW: please avoid statement without curly brackets. It is the root of all evil.
Upvotes: 5
Reputation: 797
You can try this:
while (in.nextInt() != 'SOME INT TO STOP LOOP')
count++;
Instead of verify every time if we have an entered number, we can verify if the entered number is an stop condition.
Upvotes: 0
Reputation: 95958
When you read for the first time, you don't read anymore, so hasNext()
will stay always true
since there will always be next element, which is.. the current element you're reading.
One solution is to do something like that:
String input = null;
while((input = in.next()) != null) {
//...
}
Upvotes: 3