我正在使用NetBeans的GUI构建器为大学作业创建一个彩票系统。这是我第一次尝试使用GUI,所以如果这是一个“愚蠢的问题”,我会道歉。
当用户输入他们的6个号码(范围为1-47)时,他们会生成中奖号码。当按下“比较数字”按钮时,它会告诉用户他们得到了多少数字。
为此,我已经为用户的号码和中奖号码使用了一系列JTextField。
当我尝试打印出匹配数字的数量时,它始终为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;
}
我收到错误(wonNumbersArray [i] getText()。equals(userNumbersArray [i] .getText()))。我尝试过其他比较方法,但都无济于事。这告诉我JTextField无法转换为boolean。
再次原谅对知识的无知,我对GUI很新。
任何建议都将不胜感激! 感谢
答案 0 :(得分:0)
工作代码段:
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迭代两次。
希望它有所帮助。
附注 - 迭代两个数组以检查两者中是否存在值效率不高,但是因为数组很小所以可以接受。