0

開発を開始した Java プログラムでいくつかの問題が発生しています。これは、ハリー・ポッターで有名な Honeydukes Candy Store のオンライン注文システムであり、2 つの別個のプログラムになります。クライアント プログラムは Swing にあり、注文とそのすべてを受け取り、注文が行われるとそれをサーバー プログラムに送信します。サーバー プログラムは大幅に見栄えが悪くなります。その目標は、注文をテキスト ファイルに書き込んでから、すべてがうまくいったことをクライアント プログラムに青信号にすることです。

クライアント プログラムでは、メイン パネルに残りの 2 つを含む 3 つのパネルが必要です。左側には、店舗の在庫を持つ JList を含む invntryPanel があります。右側は infoPanel を保持し、CardLayout を使用してさまざまなパネル間を変更し、JList から現在選択されている項目を使用して表示するパネルを決定します。infoPanel は、ユーザーが購入したい数量を選択する場所にもなります。

位置がまだ決まっていないボタンは、ユーザーが注文を完了したときにクリックできます。別のウィンドウが表示され、一般的な情報 (名前など) と合計が表示されます。そのウィンドウのボタンを最後に 1 回クリックすると、注文がサーバー プログラムに送信され、サーバー プログラムから要求が通過したという確認を受信すると、クライアント アプリケーションが閉じます。

始めてみましたが、今日はコンパイラの機嫌が悪いようです。私は何を間違っていますか?

これが自己中心的な質問であることをお詫びしますが、他にどこに頼ればよいか本当にわかりません. 他の複数のリソースを確認しましたが、コードは適切に機能しているように見えますが、明らかにそうではありません。

前もって感謝します。

ソース:

import javax.swing.*;
import java.util.*;
import java.awt.*;

public class ClientApp extends JFrame
{
    public static void main(String[] args)
    {
        new ClientApp();
    }


    public ClientApp()
    {
        this.setSize(320,200);
        this.setTitle("Honeydukes Candy Order");
        this.setDefaultCloseOperation(
            JFrame.EXIT_ON_CLOSE);

        ButtonListener bl = new ButtonListener();

        JPanel mainPanel = new JPanel();
        JPanel infoPanel = new JPanel(new CardLayout());
        JPanel invntryPanel = new JPanel();

        String[] candy = {"Acid Pops", "Bat's Blood Soup",
                          "Bertie Bott's Every Flavour Beans",
                          "Blood-flavoured Lollipops",
                          "Cauldron Cakes", "Charm Choc",
                          "Chocoballs", "Chocolate Cauldrons",
                          "Chocolate Frogs", "Chocolate Skeletons",
                          "Chocolate Wands", "Choco-Loco", "Cockroach Clusters",
                          "Nougat", "Crystallised Pineapple",
                          "Drooble's Best Blowing Gum", "Exploding Bonbons",
                          "Toffees", "Fizzing Whizzbees",
                          "Fudge Flies", "Ice Mice",
                          "Jelly Slugs", "Liquourice Wands",
                          "Pepper Imps", "Peppermint Toads",
                          "Pink Coconut Ice", "Pixie Puffs",
                          "Pumpkin Fizz", "Salt Water Taffy",
                          "Shock-o-Choc", "Skeletal Sweets",
                          "Splindle's Lick'O'Rish Spiders",
                          "Sugar Quills", "Sugared Butterfly Wings",
                          "Toothflossing Stringmints", "Tooth-Splintering Strongmints",
                          "Treacle Fudge", "Chocolates", "Wizochoc"};
        JList candyList = new JList(candy);
        candyList.setVisibleRowCount(candy.length);
        candyList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        JScrollPane scroll = new JScrollPane(candyList);
        invntryPanel.add(scroll);
        mainPanel.add(invntryPanel);
        this.setVisible(true);
    }
}

エラー:

ClientApp.java:20: error: cannot find symbol
                BasicButtonListener bl = new BasicButtonListener();
                ^
  symbol:   class BasicButtonListener
  location: class ClientApp
ClientApp.java:20: error: cannot find symbol
                BasicButtonListener bl = new BasicButtonListener();
                                             ^
  symbol:   class BasicButtonListener
  location: class ClientApp
Note: ClientApp.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
4

2 に答える 2

2

これはどうですか:

String[] candy = new String[38];
String[] candy = {"Acid Pops", "Bat's Blood Soup", /* ... */ };

同じスコープで同じ変数を 2 回宣言しようとしています。そんなことはできません。最初の宣言を取り除くだけです。2 番目の宣言は問題ありません。

(ヒント: 数値 38 を 2 回ハードコーディングする必要はありません。candy.length配列の要素数を知りたい場合に使用します...)

編集: コンパイラ エラーが表示されたので、次のことも行う必要があります。

  • グリナーの答えに従って配列要素を修正します
  • の意味を理解してくださいButtonListenerBasicButtonListenerおそらく、代わりに使用するつもりでしたか?
  • 変数を宣言しcandyListます(現在、変数に割り当てようとしているだけです)
  • のインポートを追加java.awt.CardLayout

あなたが与えたエラーはかなり明確です -candyList宣言が欠けているという事実によってすべて説明される複数の問題を除いて。

于 2012-07-09T18:56:20.297 に答える
1

"Pixie Puffs"candy 配列の後にカンマがありません。これにより、行がそこで終了する必要があるとコンパイラーに信じ込ませていると思います(したがって、エラーが期待されます})。これは、不正な式の開始エラーにもつながります。

于 2012-07-09T19:07:35.440 に答える