彩票程序 - 需要比较 2 个数组的共同值
Lottery program - Need to compare 2 arrays for common values
我正在使用 NetBeans 的 GUI 生成器为大学作业创建一个彩票系统。这是我第一次尝试 GUI,所以如果这是 'stupid question' 我很抱歉。
当用户输入他们的 6 个号码(范围为 1-47)时,他们会生成中奖号码。当按下 'Compare Numbers' 按钮时,它会告诉用户他们猜对了多少个数字。
为此,我为用户号码和中奖号码使用了一组 JTextFields。
当我尝试打印出匹配数字的数量时,它始终为 0。我打印了数组,发现它不是在打印值,而是实际的 JTextField 对象。所以我将其更改为 .getText,它打印值但不会比较数组。
public static int compareNumbers(JTextField[] userNumbersArray, JTextField[] winningNumbersArray){
int matchedNumber = 0;
for (int i = 0; i < userNumbersArray.length; i++) {
for (int x = 0; x < winningNumbersArray.length; x++) {
if (winningNumbersArray[i]getText().equals(userNumbersArray[i].getText())) {
matchedNumber++;
}
}
}
return matchedNumber;
}
我在 (winningNumbersArray[i]getText().equals(userNumbersArray[i].getText())) 收到错误。我尝试了其他方法进行比较,但都无济于事。这告诉我 JTextField 不能转换为布尔值。
再次原谅我对知识的无知,我对 GUI 还很陌生。
如有任何建议,我们将不胜感激!
谢谢
工作代码片段:
import javax.swing.*;
public class TFTest
{
public static void main(String[] args)
{
JTextField a[] = new JTextField[]
{
new JTextField("1"),
new JTextField("2"),
new JTextField("3"),
new JTextField("4"),
new JTextField("5"),
new JTextField("6")
};
JTextField b[] = new JTextField[]
{
new JTextField("1"),
new JTextField("2"),
new JTextField("3"),
new JTextField("4"),
new JTextField("5"),
new JTextField("7")
};
int matchedNumber = 0;
for (int i = 0; i < a.length; i++) {
for (int x = 0; x < b.length; x++) {
if (a[i].getText().equals(b[x].getText())) {
matchedNumber++;
}
}
}
System.out.println(matchedNumber);
}
}
我注意到您的代码有两个问题:
1. 在第
行的 getText() 之前缺少句点
if (winningNumbersArray[i]getText().equals(userNumbersArray[i].getText())) {
2。使用 i 索引而不是 i 和 x 迭代两次。
希望对您有所帮助。
旁注 - 遍历两个数组以检查两个数组中是否存在值效率不高,但是由于您的数组很小,因此可以接受。
我正在使用 NetBeans 的 GUI 生成器为大学作业创建一个彩票系统。这是我第一次尝试 GUI,所以如果这是 'stupid question' 我很抱歉。
当用户输入他们的 6 个号码(范围为 1-47)时,他们会生成中奖号码。当按下 'Compare Numbers' 按钮时,它会告诉用户他们猜对了多少个数字。
为此,我为用户号码和中奖号码使用了一组 JTextFields。
当我尝试打印出匹配数字的数量时,它始终为 0。我打印了数组,发现它不是在打印值,而是实际的 JTextField 对象。所以我将其更改为 .getText,它打印值但不会比较数组。
public static int compareNumbers(JTextField[] userNumbersArray, JTextField[] winningNumbersArray){
int matchedNumber = 0;
for (int i = 0; i < userNumbersArray.length; i++) {
for (int x = 0; x < winningNumbersArray.length; x++) {
if (winningNumbersArray[i]getText().equals(userNumbersArray[i].getText())) {
matchedNumber++;
}
}
}
return matchedNumber;
}
我在 (winningNumbersArray[i]getText().equals(userNumbersArray[i].getText())) 收到错误。我尝试了其他方法进行比较,但都无济于事。这告诉我 JTextField 不能转换为布尔值。
再次原谅我对知识的无知,我对 GUI 还很陌生。
如有任何建议,我们将不胜感激! 谢谢
工作代码片段:
import javax.swing.*;
public class TFTest
{
public static void main(String[] args)
{
JTextField a[] = new JTextField[]
{
new JTextField("1"),
new JTextField("2"),
new JTextField("3"),
new JTextField("4"),
new JTextField("5"),
new JTextField("6")
};
JTextField b[] = new JTextField[]
{
new JTextField("1"),
new JTextField("2"),
new JTextField("3"),
new JTextField("4"),
new JTextField("5"),
new JTextField("7")
};
int matchedNumber = 0;
for (int i = 0; i < a.length; i++) {
for (int x = 0; x < b.length; x++) {
if (a[i].getText().equals(b[x].getText())) {
matchedNumber++;
}
}
}
System.out.println(matchedNumber);
}
}
我注意到您的代码有两个问题: 1. 在第
行的 getText() 之前缺少句点 if (winningNumbersArray[i]getText().equals(userNumbersArray[i].getText())) {
2。使用 i 索引而不是 i 和 x 迭代两次。
希望对您有所帮助。
旁注 - 遍历两个数组以检查两个数组中是否存在值效率不高,但是由于您的数组很小,因此可以接受。