我正在尝试创建一个运行有效彩票的程序。但是,我的主要方法遇到了问题。我收到以下错误消息,但不确定为什么!任何帮助,将不胜感激。 Lottery.java:171:错误:找不到符号
for (j = 0; j <= numTix; j++) {
^
symbol: variable j
location: class Lottery
Lottery.java:171: error: cannot find symbol
for (j = 0; j <= numTix; j++) {
^
symbol: variable j
location: class Lottery
Lottery.java:171: error: cannot find symbol
for (j = 0; j <= numTix; j++) {
^
symbol: variable j
location: class Lottery
Lottery.java:172: error: cannot find symbol
currTicket = userTix[j];
^
symbol: variable userTix
location: class Lottery
Lottery.java:172: error: cannot find symbol
currTicket = userTix[j];
^
symbol: variable j
location: class Lottery
Lottery.java:176: error: cannot find symbol
bestRow = j;
^
symbol: variable j
location: class Lottery
Lottery.java:180: error: cannot find symbol
for(int x = 0; x < userTix.length; x++) {
^
symbol: variable userTix
location: class Lottery
Lottery.java:181: error: cannot find symbol
System.out.print(userTix[bestRow][x]);
^
symbol: variable userTix
location: class Lottery
这是我认为错误来自的方法:
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int k;
int n;
int m;
System.out.println("First, let's set up the game!");
System.out.print("How many distinct numbers should the player pick? ");
k = scnr.nextInt();
System.out.println(k);
if (k < 1) {
System.out.print("Error - number must be greater than or equal to 1! Please try again. ");
k = scnr.nextInt();
System.out.print(k);
}
System.out.print("Ok. Each of those " + k + " numbers should range from 1 to what? ");
n = scnr.nextInt();
System.out.print(n);
if (n <= k) {
System.out.print("Error - number must be greater than or equal to " + k + ". Try again. ");
n = scnr.nextInt();
System.out.print(n);
}
System.out.print("Ok. And finally, the bonus number should range from 1 to what? ");
m = scnr.nextInt();
System.out.println(m);
if (m < 1) {
System.out.print("Error - number must be greater than or equal to 1. Try again. ");
m = scnr.nextInt();
System.out.println(m);
}
System.out.println("There are " + numPossibleTickets(k, n, m) + " possible tickets in this game.");
double chanceWin = 1.0 / numPossibleTickets(k, n, m);
System.out.println("Each ticket has a " + chanceWin + " chance of winning the Jackpot. Let's play, good luck!");
System.out.print("How many tickets would you like to buy? ");
int numTix = scnr.nextInt();
System.out.println(numTix);
if (numTix < 1) {
System.out.print("Error - must buy at least 1 ticket. Try again. ");
numTix = scnr.nextInt();
System.out.print(numTix);
}
for (int i = 1; i <= numTix; i++) {
System.out.println("Ticket #" + i + "of " + numTix);
getPlayerNumbers(k, n);
System.out.println("Your tickets so far: ");
int userTix[][] = new int[numTix][k];
userTix[i - 1] = getPlayerNumbers(k, n);
System.out.println(userTix + " Bonus: " + getBonusNum(m));
}
System.out.println("The moment of truth has arrived! Here are the drawn numbers: ");
int[] drawnNums = getDrawnNumbers(k, n);
System.out.println(drawnNums + " Bonus: " + randBonusNum(m));
int randBonus = randBonusNum(m);
boolean bonusCheck = bonusMatch(m, randBonus);
if (numTix > 1) {
int tempMatches = 0;
int max = -1;
int bestRow = 0;
int[]currTicket = new int[k];
for (j = 0; j <= numTix; j++) {
currTicket = userTix[j];
tempMatches = countMatches(currTicket, drawnNums);
if (max < tempMatches) {
max = tempMatches;
bestRow = j;
}
}
System.out.println("Here's your best ticket: ");
for(int x = 0; x < userTix.length; x++) {
System.out.print(userTix[bestRow][x]);
}
System.out.println(" Bonus: " + m);
System.out.println("It matched " + max + "/" + k + "drawn numbers.");
if (bonusCheck = true) {
System.out.println("It did match the bonus number.");
}
else {
System.out.println("It did not match the bonus number.");
}
if (max == k * 1 && bonusCheck == true) {
System.out.println("WOOHOO! JACKPOT!!");
}
else {
System.out.println("Sorry, no jackpot this time. Did you really expect anything else?");
}
}
}
同样,我很确定我声明了变量,所以我不确定问题出在哪里。如果我调用的任何方法似乎是问题的一部分,请告诉我,我也将发布它们。如果您在我的代码中看到任何其他错误,请随时告诉我!
答案 0 :(得分:4)
好吧,您没有j
变量(并且userTix
很快就超出了范围)。就那么简单。试试
int k;
int n;
int m;
int j;
int[][] userTix; // int userTix[][] is legal, but harder to read (IMO)
然后更改
int userTix[][] = new int[numTix][k];
到
userTix = new int[numTix][k];
另外,对于循环变量,您可以使用(对于j
)
for (int j = 0; j < numTix; j++) {
请注意,从0
开始意味着您可能想要<
(而不是<=
)。