我的程序编译遇到问题时遇到问题。我目前有这个程序的两个类,我的变量lotteryNumbers是第一个类。它是一个int数组变量,所以我不知道如何在这行代码中插入它。这个节目是一个让人们选票的彩票计划。这是代码行,我得到的第一个问题是找不到变量
import java.util.Scanner;
import java.util.InputMismatchException;
public class CashBallTest
{
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
int kicker;
System.out.println("\t\t\t\tCashLottoBall");
System.out.println("Player picks four numbers from 1 to 33 called LottoCash Balls. LottoCash Ball numbers must be unique from all other LottoCash Balls.");
System.out.println();
System.out.println("The player must also pick a CashBall from 1 to 31.");
System.out.println();
System.out.println("Kicker is a brand new feature you can purchase with your CashBall ticket which lets you get in on an extra drawing.");
System.out.println();
System.out.println();
for(int index=0; index<lotteryNumbers.length; index++)
{
来自for(int ..... line at the bottom。
编辑* 这是第一个名为CashBall的类,其中包含变量
import java.util.Scanner;
public class CashBall
{
Scanner keyboard = new Scanner(System.in);
int[] lotteryNumbers = new int[4];
int[] kicker = new int[4];
int[] kickerPowerBall = new int[1];
int yourNumbers;
int CashBallPick;
public CashBall(int yourNumbers, int CashBallPick)
{
this.yourNumbers=yourNumbers;
this.CashBallPick=CashBallPick;
}
public int getYourNumbers()
{
return yourNumbers;
}
public int getCashBallPick()
{
return CashBallPick;
}
public void setYourNumbers(int yourNumbers)
{
this.yourNumbers=yourNumbers;
}
public void setCashBallPick(int CashBallPick)
{
this.CashBallPick=CashBallPick;
}
}
答案 0 :(得分:0)
您是否已将lotteryNumbers定义为定义它的类中的受保护或公共变量
如果它们不在同一个包中,你还需要包含定义变量lotteryNumbers的类int
或者你可以在定义它的类中定义一个函数get_lottery_Numbers(),然后在其他类中调用该方法。
这里有一个例子可以提供帮助
http://www.roseindia.net/java/javascript-array/call-method-another-class.shtml
答案 1 :(得分:0)
您没有名为lotteryNumbers
的变量。
答案 2 :(得分:0)
在other class
中,您需要为lotteryNumbers
字段声明一个getter,然后使用getter方法在CashBallTest
中获取该字段。
这是一个例子。我们假设您的另一个类名为SomeClazz
。它应如下所示: -
public final class SomeClazz {
private final int[] lotteryNumbers;
public SomeClazz(int[] lotteryNumbers){
this.lotteryNumbers=lotteryNumbers;
}
public int[] getLotteryNumbers() {
return lotteryNumbers;
}
}
然后在CashBallTest
课程中,您应该有以下内容来访问lotteryNumbers
: -
int[] lotteryNumbers = {1,2,3};
SomeClazz clazz = new SomeClazz(lotteryNumbers);
for(int index=0; index<clazz.getLotteryNumbers().length; index++){
}
现在您可以从其他类访问lotteryNumbers
,因此不再出现未知符号错误。
答案 3 :(得分:0)
如果“lotteryNumbers在第一堂课”中你的意思是在lotteryNumbers
类中有一个字段CashBallTest
,那么访问它的方式取决于它的声明方式。如果它是静态变量,您可以通过CashBallTest.lotteryNumbers
引用它。如果它不是静态的,那么您需要创建CashBallTest
的实例(我们称之为test
),然后通过test.lotteryNumbers
引用它。
答案 4 :(得分:0)
因此,在您的CashBall课程中,您需要:
import java.util.Scanner;
import java.util.InputMismatchException;
public class CashBall
{
// you should probably initialize this variable in your constructor
private int[] lotteryNumbers;
public int[] getLotteryNumbers() { return lotteryNumbers; }
}
这定义了一个名为lotteryNumbers的类内部的私有变量,然后创建一个公共方法,将其公开给测试类。然后,您需要在CashBallTest中创建CashBall对象,并访问其彩票号码。像:
public class CashBallTest
{
public static void main(String[]args)
{
CashBall test = new CashBall();
for(int index=0; index < test.getLotteryNumbers().length; index++) ;
}
}
我们这样做是为了封装变量,以便稍后我们可以更改CashBall用于存储lotteryNumbers的内部变量,而不会强制使用CashBall更改其所有代码的其他类。
例如,我可以改变:
private int[] lotteryNumbers;
到
import java.util.collections.ArrayList
private ArrayList<Integer> lotteryNumbers;
public int[] getLotteryNumbers() {
int[] returned;
return lotteryNumbers.toArray(returned);
}
封装是一种很好的编码实践,所以一定要养成封装私有的习惯。
要获得额外的功劳,您可能不希望在测试中遍历数组的长度。这很糟糕,因为您的测试依赖于具有int []的CashBall。如果CashBall发生变化,您的测试必须改变。
要“做得对”,你应该在CashBall中添加处理“选择彩票号码”的方法(我假设这是第一个循环试图做的),“验证彩票号码”和“玩踢球者”那么你的测试课就会变成这样:
import java.util.Scanner;
import java.util.InputMismatchException;
public class CashBallTest
{
CashBall toTest;
public static void main(String[]args)
{
toTest = new CashBall(); // add parameters here as necessary
toTest.collectUserLotteryNumbers(); // put the Scanner stuff in here. Make the menu its own void method that's called from here
if(toTest.validateUserNumbers() == false) {
throw new InputMismatchException("Numbers must be between 1-31, and cannot be repeated");
}
}
}
随着您获得更多编码经验,您会发现自己编写如下:
public class CashBallTest
{
CashBall toTest;
public static void testUserCollection()
{
toTest = new CashBall(); // add parameters here as necessary
toTest.collectUserLotteryNumbers(); // put the Scanner stuff in here. Make the menu its own void method that's called from here
if(toTest.validateUserNumbers() == false) {
throw new InputMismatchException("Numbers must be between 1-31, and cannot be repeated");
}
public static void main(String[]args)
{
testUserCollection();
}
}
}
这使您可以将您正在测试的每个事物分解为自己的特定方法,从而可以轻松添加单个测试或修改它们,而不会破坏主方法中的其他内容。进入这种实践后,您将准备好了解单元测试框架,如JUnit。