-
August 1st, 2010, 02:02 PM
#1
while loop issue
I am taking an intro java summer class and this is one of the assignments. I was going along pretty smoothly with my code until I wrote this for loop and tried to test my progress.
The loop takes in input to create the size of the array of objects. It is for a tournament bracket matchup, so it needs to be 4, 8, 16, 32, or 64. Problem is that when I use || it no longer works.
If I use a statement like while (teamCount != 4) it works fine.
Code:
/* Tournament.java
This program takes user input of teams and number of wins to create
an array of team objects and makes pairings of teams for a tournament
@author Gary C. Rogers 2010
*/
import java.util.Scanner;
public class Tournament
{
public static void main(String[] args)
{
int teamCount;
int teamWins;
String name;
Scanner input = new Scanner(System.in);
//Ask the user for thr number of teams for the tournament
System.out.println("What is the number of teams in the tournament?");
teamCount = input.nextInt();
//Make sure that the input is valid for matchups
while (teamCount!=4 || teamCount !=8 || teamCount !=16 || teamCount !=32 || teamCount !=64)
{
System.out.println("You have entered an invalid number of teams. Please try again.");
System.out.println("What is the number of teams in the tournament?");
teamCount = input.nextInt();
}
//Declares the array to store objects
Team[] teamArray = new Team[teamCount];
int count = 0;
//Loop allows for the input for the team objects
do
{
System.out.println("What is the team name?");
name = input.next();
System.out.println("How many wins do they have?");
teamWins = input.nextInt();
teamArray[count]= new Team( name, teamWins);
count++;
if (count < teamCount)
{
System.out.println("Team information gathered. Input next team.");
}
else
{
System.out.println("All teams have been inputed. Thank you.");
}
}
while (count < teamCount);
for (int index = 0; index < teamArray.length; index++)
{
System.out.println(teamArray[index].getTeamName() + " " + teamArray[index].getWins());
}
}
}
There still needs to be a whole structure written to make the matchups, but for now this displays the team objects that the user inputs.
-
August 1st, 2010, 07:36 PM
#2
Re: while loop issue
If the user entered 8 would teamCount != 4 be true?
If you want all of the conditions to be true to have the code enter the while loop, use the AND operator. With OR, only one of the tests must be true to enter the while.
Norm
-
August 2nd, 2010, 09:15 AM
#3
Re: while loop issue
You could also consider using the modulus operator for your while condition. It returns the remainder of dividing its first argument by the second. For example:
Code:
System.out.println(5 % 2);
will output one. If you always want a multiple of four for your team count, you could use it like this:
Code:
while ((teamCount % 4) != 0)
Then you don't have to worry about someone putting in 128 and your code failing that input, or dealing with the multiple similar conditions.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|