-1

これは、GUI と線形配列を含む、私の最初の Java プログラムの 1 つです (願わくば!)

これが「ヘルプ」Web サイトではなく、アイデアをコラボレーションするための場所であることはわかっていますが、この 1 時間半の間、問題がほとんどまたはまったく進行していない状態で目を凝らしてきました (瞬間的にあまりにも取得します) 面白いことに、それはおそらくプログラムの最も難しい部分でさえありません.

ですから、皆さんがこれを理解するのを手伝ってくれることを願っています. 私はすでに書いたかなり単純なプログラムを作成しました。プログラムの完了後、ユーザーは、linearArray (1、2、31、または 35) から数字を選択して (enterNumberField) に数字を入力できます。ボタンをクリックすると、プログラムは A、B、C、または D のいずれかを textField に出力します。

残念ながら、どの数字を選択しても、常に 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")) {

編集

質問が変わりました。以前は のif後に 2else-ifが続き、elseそれぞれが値==の比較を試みていました。String

現在は 3 つのステートメントであり、すべてが現在使用されている場合でもif、最後の 1 つだけに があります。elseequals

else2 番目と 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 つだけ実行されます。

于 2013-05-13T22:21:57.897 に答える