-1

这是我的第一个 java 程序之一,它包括一个 GUI 和一个线性数组(我希望!)

我知道这不是一个“帮助”网站,而更像是一个协作想法的地方,但在过去的一个半小时里我一直盯着我的眼睛,我的问题几乎没有进展(我会变得太短暂)有趣的是它可能甚至不是程序中最难的部分。

所以我希望你们能帮助我解决这个问题。我创建了一个相当简单的程序,大部分我已经编写过,程序完成后,用户可以在(enterNumberField)中输入一个数字,从 linearArray(1、2、31 或 35)中选择数字,然后按一个按钮,程序在我称为“ItsAField”的文本字段中输出 A、B、C 或 D(我知道有创意)。

不幸的是,无论选择什么数字,它总是输出为 D。

public class ChildrensClassicsView extends FrameView {

    String [] linearArray = {"1", "2", "31", "35"}; //numbers to choose from

}

    static public Boolean linearSearch (String [] A, String B) {
        for (int k=0; k<A.length; k++) {
            if (A[k].equals(B)) {
                return true;
            }
        }
        return false;
    } 

按下动作执行按钮后...

如果这只是这些“if 语句”的问题,我不会感到惊讶,但是我什至不确定您是否可以像这样使用它们来获得我正在寻找的答案。我在输出“选择”变量的正确轨道上吗?

    private void findButtonActionPerformed(java.awt.event.ActionEvent evt) { 

String input = enterNumberField.getText();

if (input.equals("1")) {
        ItsAField.setText("Search: A " + linearSearch(linearArray, "1"));
    }
    if (input.equals("2")) {
        ItsAField.setText("Search: B " + linearSearch(linearArray, "2"));
    }
    if (input.equals("28")){
        ItsAField.setText("Search: C " + linearSearch(linearArray, "31"));
    } else {
        ItsAField.setText("Search: D " + linearSearch(linearArray, "35"));
    }

我也有我的数字交叉希望这仍然是一个真正的问题:)

4

2 回答 2

0

您需要将字符串与String.equals()not进行比较==

所以将 if 语句更改为if("1".equals(input))

于 2013-05-13T22:21:52.073 回答
0

您正在尝试String使用运算符比较值==,但在 Java 中,对于对象(包括Strings),这会比较对象引用以确定它们是否引用同一个对象。

要比较String值,请使用String#equals.

if (input.equals("1")) {

编辑

问题变了。它曾经是 anif后跟 2 else-ifs 后跟 an else,每个都使用==尝试比较String值。

现在是 3 个if语句,只有最后一个有else,即使它们现在都在使用equals

恢复else第 2 条和第 3 条if语句之前的内容。它们应该是else if陈述。

if (input.equals("1")) {
    ...
}
else if (input.equals("2")) {  // else restored here
    ...
}
else if (input.equals("28")){  // else restored here
    ...
} else {
    ...
}

这样,恰好执行了一个条件块。

于 2013-05-13T22:21:57.897 回答