I am having problems with my java assignment. I have been working on it for 2 weeks and could really use some help.
Here is the problem:
Create a console (standalone) application. This program will allow you to select MegaBall lottery numbers. For the first 5 numbers you will be requested to enter a number that is greater than zero and less than or equal to 56. However, there’s a catch! Each number must be different.
When any of the first five numbers is less than 0 or greater than 56 the user will receive a message to this effect and will be asked to reenter the number. You will create the code that will display one message when a number less than 1 is entered and a different message if a number greater than 56 is entered.
If the number is the same as any number entered before it (with the exception of the megaball number) the user will receive a message to th开发者_开发知识库is effect and asked to reenter the number. This is the same for the second through fifth numbers. I typed in the same number a couple of times so you will see what occurs when I do.When entering the megaball number, if the number entered IS NOT between 1 and 46 then the user will receive a message to this effect and asked to reenter the number. One message will display if the number is less than 1, and a different if the number is greater than 46.
The following MUST be included in the program:
- You must have multiple classes. One that contains the accessor and mutator methods, a readInput() method and a writeOutput() method. You will not use the mutator methods but include them anyway to show that you know how to write them. Name this first program “Megaball.java”.
- The second program is to be named “MegaballTest.java” and will be responsible for creating a Megaball object and calling the writeOutput() and readInput() methods from the Megaball class.
Here is my solutions:
import java.util.Scanner;
public class Megaball
{
Scanner scan = new Scanner(System.in);
double n1, n2, n3, n4, n5, n6;
double Num;
String readInput;
String writeOutput;
public Megaball()
{
n1 = 0;
n2 = 0;
n3 = 0;
n4 = 0;
n5 = 0;
n6 = 0;
}
public Megaball(double n1, double n2, double n3, double n4, double n5, double n6)
{
this.n1 = n1;
this.n2 = n2;
this.n3 = n3;
this.n4 = n4;
this.n5 = n5;
this.n6 = n6;
}
public double getNum()
{
return Num;
}
public void setNum(double n1, double n2, double n3, double n4, double n5, double n6)
{
this.Num = Num;
}
public String readInput()
{
return readInput;
}
public String writeOutput()
{
return writeOutput;
}
}
public class MegaballTest
{
public static void main(String[] args)
{
Megaball n1 = new Megaball(0,0,0,0,0,0);
Megaball n2 = new Megaball(0,0,0,0,0,0);
Megaball n3 = new Megaball(0,0,0,0,0,0);
Megaball n4 = new Megaball(0,0,0,0,0,0);
Megaball n5 = new Megaball(0,0,0,0,0,0);
Megaball n6 = new Megaball(0,0,0,0,0,0);
do
{
System.out.println("Please enter your 1st number which is between 0 and 56");
if (n1 < 0 || n1 > 56)
System.out.println("Number must be between 0 and 56");
}while (n1 < 0 || n1 > 56);
System.out.println("Please enter your 2nd number which is between 0 and 56");
}
}
On the test... I wanted to make sure the first number worked before I did the rest. Here is the error I keep getting:
G:\MegaballTest.java:15: operator < cannot be applied to Megaball,int
if (n1 < 0 || n1 > 56)
^
G:\MegaballTest.java:15: operator > cannot be applied to Megaball,int
if (n1 < 0 || n1 > 56)
^
G:\MegaballTest.java:17: operator < cannot be applied to Megaball,int
}while (n1 < 0 || n1 > 56);
^
G:\MegaballTest.java:17: operator > cannot be applied to Megaball,int
}while (n1 < 0 || n1 > 56);
^
4 errors
Tool completed with exit code 1
Thanks so much!!
I think you're trying to get input from the user, which you then want to ensure is between 0 and 56. Currently, you're checking whether your Megaball is between 0 and 56 (which you can't do, because Java doesn't know how to compare a Megaball and an int (hence, the errors you're getting). You actually need to get the user input first in that do/while statement. What you'll want to use to do that is something like:
int userInput = scan.next();
to get the next text the user enters. You can then run the comparisons
userInput > -1
userInput < 57
Hope this gets you started. Let us know how it goes.
- Create a console (standalone) application. This program will allow you to select MegaBall lottery numbers. For the first 5 numbers you will be requested to enter a number that is greater than zero and less than or equal to 56. However, there’s a catch! Each number must be different.
There is a sequence here and the values are integers. Consider the use an array (int[]
) or a List (ArrayList<Integer>
).
- When any of the first five numbers is less than 0 or greater than 56 the user will receive a message to this effect and will be asked to reenter the number. You will create the code that will display one message when a number less than 1 is entered and a different message if a number greater than 56 is entered.
If the number is the same as any number entered before it (with the exception of the megaball number) the user will receive a message to this effect and asked to reenter the number. This is the same for the second through fifth numbers. I typed in the same number a couple of times so you will see what occurs when I do.
Consider the following member variable:
ArrayList<Integer> numbers;
(using an ArrayList is simpler to "grow").
Then consider the functions int readNumber()
: Perform the above logic (reading from input and displaying the messages). Returns -1 if an invalid number is selected, else returns the number in the appropriate range. Inside readNumber
, make sure the number does not currently exist in the numbers
list (remember, numbers
is a member variable).
- When entering the megaball number, if the number entered IS NOT between 1 and 46 then the user will receive a message to this effect and asked to reenter the number. One message will display if the number is less than 1, and a different if the number is greater than 46.
The mega-ball is different in that it can be a repeat and the range is different.
So, consider the function int readPowerballNumber()
: Perform the above logic (reading from input and displaying the messages). Returns -1 if an invalid number is selected, else returns the number in the appropriate range.
Now, having those two, the following pseduo-code can be employed:
This might be the code in the readInput()
member. Remember that numbers
is a member variable. Also note that it farms out the work to the "helper" methods which employ the logic for reading and displaying the warning, etc.
set numbers = an empty list
while have less than 5 numbers:
number = readNumber()
if number is not -1:
append number to numbers
while have less than 6 numbers:
number = readPowerballNumber()
if number is not -1:
append number to numbers
// at this point, all 6 numbers are valid and loaded
// you may then call `writeOutput()` to write all the numbers
The following MUST be included in the program:
- You must have multiple classes. One that contains the accessor and mutator methods, a readInput() method and a writeOutput() method. You will not use the mutator methods but include them anyway to show that you know how to write them. Name this first program “Megaball.java”.
I have no idea why this "requirement" is here. Do what your teacher wants.
However, note that readInput()
and writeOutput()
are methods and not Strings (as you currently have in code).
- The second program is to be named “MegaballTest.java” and will be responsible for creating a Megaball object and calling the writeOutput() and readInput() methods from the Megaball class.
Happy coding.
Note: The above merely describes how to "load" a Megaball number sequence into an ArrayList<Integer>
. I would make a constructor which turns the number sequence (after you "build it") into a Megaball object itself (and thus have a Megaball be immutable. However, make sure to adjust for your teachers grading habits. Perhaps the above methods could be in a MegaballBuilder, if it earns some bonus points ;-)
You have defined n1 and n2 as Megaball objects.
Megaball n1 = new Megaball(0,0,0,0,0,0);
Megaball n2 = new Megaball(0,0,0,0,0,0);
So you cannot compare the two Megaball objects with the < or > operator without overloading the < and > operators for a Megaball object.
What you should do is compare the n1 double variable inside the n1 Megaball object with n2 double variable inside the n
Having looked over the code it seems you are skipping some steps and that is leading to your difficulties. The main error being reported is basically indicating to you that you cannot use relational operators like "<", ">", etc... on objects in Java. Unlike C++ programming, this is generally not allowed (except in the case of auto-boxing, but never mind that for now).
Hint 1: After requesting user input, you should be reading in data from the Scanner that you defined.
Hint 2: Don't make your lottery ticket objects until you have a legal set of numbers to construct them with.
精彩评论