0

皆さん、おはようございます。私は Java プログラミングの初心者です。要するに、ボタンをクリックするだけで .txt ファイルを読み取ってコンパイルできるプログラムを作成しています。

ファイルの読み取りはすでに完了しています。私の問題は、プログラムが最初の JTextArea からのテキストをコンパイルせず、結果を 2 番目の JTextArea に表示しないことです。

私はこの問題を 4 日間抱えており、考えられるあらゆる方法でコードを変更しようとしています。誰かが私を啓発し、私のコードの何が問題なのか教えてもらえますか? それは確かに私を大いに助けます。

すべてに感謝します。

    @SuppressWarnings("IncompatibleEquals")
private void executeCodeActionPerformed(java.awt.event.ActionEvent evt) {                                            
    String loadi = "Load";
    String add = "Add";
    String subt = "Subt";
    String mult = "Mult";
    String div = "Div";
    String input = "Input";
    String print = "Print";
    int number = 0;

    String txt = textAreaCode.getText();
    String split = " ";
    String [] text = txt.split(split);
    String word = text[0];
    int num = Integer.getInteger(text[1]);
    int result = num;
    int result1 = 0;
    Scanner scan = new Scanner(txt);
    scan.nextLine();

    for (int count=0;count<txt.length();count++ ) {
        if (loadi.equalsIgnoreCase(word)){
            result1 = num + number;
        }
        else if (add.equalsIgnoreCase(word)){
            result1 = num + result;
        }
        else if (subt.equalsIgnoreCase(word)){
            result1 = num - result;
        }
        else if (mult.equalsIgnoreCase(word)){
            result1 = num * result;

        }
        else if (div.equalsIgnoreCase(word)){
            result1 = num / result;

        }
        else if (print.equalsIgnoreCase(word)){
            textAreaOutput.setText(String.valueOf(result1));
        }
        else if (input.equalsIgnoreCase(word)){
            String nmbr = inputField.getText();
            int nmr = Integer.parseInt(nmbr);
            result1 = nmr + number;
        }
    }
4

1 に答える 1

0

コードにいくつかのエラーがあり、まったく機能しない可能性があります。どうぞ:

  1. 変数wordは、次のトークンに更新されることはありません (text[0]最初は に設定され、その後変更されることはありません)。についても同様ですnum

  2. numすべての演算は変数およびに作用しresult、結果を に入れresult1ます。したがって、中間結果は操作から次の操作に引き継がれません。

  3. 「入力」操作inputFieldは、ユーザーが実際に何かを入力するのを待たずに、 から現在の値を読み込みます。

  4. メイン ループcountは、プログラム内の文字数に達するまで繰り返します。代わりに、トークンの数だけループする必要があります。

また、コードをより読みやすくするためのいくつかの提案を次に示します。

  1. Java を初めて使用する場合は、Scanner オブジェクトを取り除き、「スペースで分割する」アプローチのみを維持してください。これは実際の問題にはお勧めしませんが、Scanner正しく使用するにはやや複雑です。

  2. 分割された単語配列を List コレクションにラップし、そこから反復子を取得します。ここにあります:

    Iterator<String> words = Arrays.asList(txt.split("[ ]+")).iterator();

    次に、ループを次のように記述します。

    while (words.hasNext()) { String command = words.next(); ... }

  3. 操作ニーモニックを関数の外に移動し、それらを final としてマークします。

  4. 各操作ブロック内から操作引数を読み取ります。一部の操作は引数を受け取らないため、これが必要です。

これは実際に自分で行う必要があるため、コードは提供しません。それが役立つことを願っています。幸運を。

于 2013-10-24T03:37:30.847 に答える