2011-02-02 11 views
0

このクラスをtestscoresという名前で作成する必要がありますシンプルなJava宿題のヘルプ、guiのヘルプが必要

TestScoresという名前のクラスを作成します。クラスコンストラクタはテストのスコアの配列を引数として受け入れる必要があります。クラスには、テストスコアの平均を返すメソッドが必要です。配列内のテストスコアが負または100より大きい場合、クラスはillegalArgumentExecpetionをスローする必要があります。プログラムでクラスを説明する。

これは、私は彼が望んでいるどのように多くのテストの点数を入力するユーザーを可能にするGUIコードを記述しようとしている私のプログラム

.lang.IllegalArgumentException; 

/** 
* class TestScores 
* @author george beazer 
* 
*/ 
public class TestScores { 

    double[] scoresArray; 
    double average; 

    /** 
    * Constructor 
    * @param double[] scores 
    */ 
    public TestScores(double[] scores) { 

     this.scoresArray = new double[scores.length]; 

     try { 
      for(int i = 0; i < scores.length ; i++) { 
       this.scoresArray[i] = scores[i]; 
       if((this.scoresArray[i] < 0) || (this.scoresArray[i] > 100)) 
        throw new IllegalArgumentException(Double.toString(this.scoresArray[i])); 
      } 
      this.calcAverage(); 
     } 
     catch(IllegalArgumentException e) { 
      System.out.println("The Array contains Illegal values! " + 
        e.getMessage() + " is Less than 0 or Greater than 100.");   
     } 
    } 

    /** 
    * private method to calculate the average of the array 
    */ 
    void calcAverage() { 
     int count = 0; 
     double sum = 0; 

     for(int i = 0; i < this.scoresArray.length; i++) { 
      sum = sum + this.scoresArray[i]; 
      count++; 
     } 

     this.average = sum/count; 
    } 

    /** 
    * accessor method for average 
    * @return double average; 
    */ 
    public double getAverage() { 
     return this.average; 
    } 


} 

です。 たとえば、ユーザーは3つのテストスコアを入力できますが、最後のマインドを変更して6つのテストスコアを入力します。私がGUIについて知っていることから、テストスコアの数をあらかじめ定義しなければなりません。たとえば、テストスコア用に3つのオブジェクトを作成しますが、ユーザーが4番目のテストスコアを設定したい場合はできません。

JButton test-scores1 = new JButton ("Button1"); 
JButton test-scores1 = new JButton ("Button2"); 
JButton test-scores1 = new JButton ("Button3"); 
+1

コードを4つインデントするか、ポストエディタで '{}'ボタンを使います。私はあなたのためにそれを固定した。 –

答えて

0

GUIがあなたの割り当てに二次的であり、あなただけのみんなを感動したい場合、私はあなたのUIを作るためにGUIエディタを使用することをお勧め:

http://www.eclipse.org/vep/

背面I日に私はそれのためのGUIエディタを使用するスイングのアプリを書いた。確かに、コードはもう少し冗長でカスタム作成されますが、時間が節約されます。

+2

GUIエディタはプロトタイプ作成には適していますが、GUIを作成する方法を学習するのには適していないコードを生成します。学生をGUIエディタに向けることは、IMOの悪い考えです。 – jzd

+0

私は幾分同意しますが、一方で、私はスイングを学んでいたときに、コードが生成されていて、それがどのように行われたかを見ることができ、次回はgridbaglayout – mkoryak

+1

このアプローチの問題点は、通常、ドラッグアンドドロップGUIコードジェネレータで生成されたコードはgawd-awfulです(少なくともNetBeans Matisseジェネレータではそうです)。 。 –

1

多数のJButtonへの参照を保持したいのに、コンパイル時に必要な数がわからない場合は、ArrayListなどのJButtonのコレクションを使用できます。ボタンを、GridLayoutを使用するJPanelに追加し、束を表示する場合はJScrollPaneに配置することができます。

JTableはおそらくJButtonsの束よりもクリーンであることが好ましいと思います。このようにして、100行を保持するグリッドを持つことができます。そして、ユーザーは、必要な数の行または数行のデータを書き込むことができます。 Swing JTableをコーディングする方法については、こちらのチュートリアルをご覧ください:How to Use Tables

また、GUIビルダーの使用に関しても、私はそれに反対します。 1つは、Swingを学ぶ能力を妨げる可能性があり、別の場合は、最終的なGUI設計において柔軟性を失う危険性があります。また、複雑なGUIの場合、手作りのSwingコードよりも使用するのが難しいことがあります。

+0

あなたは理解していませんが、私は彼が望むように多くのまたは少しテストスコアを入力することを許可したいと思います。 3つのテストスコアから5から10までどのようなタイプのコードをGUIで実行できるのですか? – user599272

+1

コードを入力する前に、GUIの全体的な設計をしている必要があり、JButtonの束がそれほど正しくはないと言われています。 –

1

テストスコアの数を選択するためにボタンをクリックするのは、奇妙なUIのようです。代わりに、JSpinnerまたはJComboBoxを使用して、ユーザーがスコアの数を選択できるようにします。

+0

はい、そうです。 1+ –