线性阵列输出问题?

时间:2013-05-13 22:19:28

标签: java arrays linear

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

我知道这不是一个'帮助'网站,而是一个合作的地方 想法,但我一直盯着我看过去一个半小时,我的问题很少甚至没有进展(我会立刻得到)有趣的是它可能甚至不是程序中最难的。

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

不幸的是,无论选择什么号码,它总是输出为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"));
    }

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

2 个答案:

答案 0 :(得分:0)

您需要将字符串与String.equals()而不是==

进行比较

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

答案 1 :(得分:0)

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

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

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

修改

问题改变了。它曾经是if,后跟2 else-if s后跟else,每个==使用String尝试比较if值。

现在有3个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 { ... } 陈述。

{{1}}

这样,只执行一个条件块。