2

最初に、割り当てが何であったかをリストします。次に、私の問題をリストします。最後に、これまでのコードをリストしますが、完全には程遠いですが、このステップを過ぎるまで先に進むことはできません。

割り当て:

このプログラミング課題の目的は、Java 多次元配列の使用、ボタンを使用したイベント駆動型プログラミング、および JFrame と JOptionPane クラスを使用した AWT と Swing のアプリケーションを実際に体験できるようにすることです。

プログラム要件:

次の要件で、コースのスコア計算のために init() を使用して Java アプレットを作成します。

JoptionPane を使用して、講師が受講者数、G ナンバー (受講者名は不要)、コース数、コース ID (CIT230、CIT352 など)、コースごとのスコアを入力できます。コースのスコアは、2 次元配列に格納する必要があります。2 次元配列の例は次のとおりです。

するとテーブルが表示されます。JTables を使用していないことに注意してください。

ボタンを追加し、イベント駆動型プログラミング手法を使用して、ユーザーが「学生のスコアの並べ替えと一覧表示」、「各学生の平均スコアの表示」、および「終了」の 3 つのボタンをクリックできるようにします。

  1. [学生のスコアを並べ替えて一覧表示] ボタン -- 各学生のスコアを並べ替えて表示します。
  2. 「各生徒の平均点を表示」 -- 各生徒の平均点を表示します。
  3. 「終了」 -- ユーザーがプログラムを終了するための [はい] または [いいえ] ダイアログ ボックスを作成します。

私の問題: この多次元配列を作成する方法がわかりません。次元はユーザーの入力に基づいています。行は学生数、列はコース数です。私のプログラムがある程度動いているとき、JOptionPane は [[null][null]] を表示していました。JOptionPane ではなく、以前に設定された次元で 2 次元配列を作成する方法を知っていますが、これは私を道に迷わせています。直接の回答コードを求めているわけではありません。これを書くための正しい方法の例またはガイダンスが必要なだけです。

私のコード:

(試してみてうまくいかなかったことがいくつかコメントアウトされています。さまざまな方法を試しましたが、それらを削除するだけです。)

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

public class ScoreApplet extends JApplet implements ActionListener 
{
    private JLabel mainMenu;
    private JButton sortScores;
    private JButton displayAverage;
    private JButton exit;
    private String[][] tableStudentScores; 

    private int studentNumber;
    private int courseNumber;
    private String studentNumberString;
    private String courseNumberString;
    private String scoresString;
    private double scores;

    public void init() 
    {
        Container contentPane = getContentPane();
        contentPane.setBackground(Color.WHITE);

        contentPane.setLayout(new FlowLayout());

        mainMenu = new JLabel("What would you like to do?");
            sortScores = new JButton("Sort And List Student's Scores");
            displayAverage = new JButton("Display Average Score for Each Student");
            exit = new JButton ("Exit");

        contentPane.add(mainMenu);
        contentPane.add(sortScores);
        sortScores.addActionListener(this);
        contentPane.add(displayAverage);
        displayAverage.addActionListener(this);
        contentPane.add(exit);
        exit.addActionListener(this);

        mainMenu.setVisible(false);
        sortScores.setVisible(false);
        displayAverage.setVisible(false);
        exit.setVisible(false);

        studentNumberString = JOptionPane.showInputDialog("Please enter the number of students:");
        studentNumber = Integer.parseInt(studentNumberString);
        tableStudentScores = new String[studentNumber][];
        courseNumberString = JOptionPane.showInputDialog("Please enter the number of courses:");
        courseNumber = Integer.parseInt(courseNumberString);
        tableStudentScores = new String[studentNumber][courseNumber];


        for (int index = 0; index < studentNumber; index++)
            for (index = 0; index < courseNumber; index++)

                scoresString = JOptionPane.showInputDialog("Please enter the scores for Student " + (index+1));
                scores = Double.parseDouble(scoresString);




        /*
        for (int index = 0; index <= (courseNumber - 1); index++)
        {

            scoresString = JOptionPane.showInputDialog("Please enter the scores for Student " + (index+1) );
            scores = Double.parseDouble(scoresString);


        }
        */

        JOptionPane.showMessageDialog(null, Arrays.deepToString(tableStudentScores));

        mainMenu.setVisible(true);
        sortScores.setVisible(true);
        displayAverage.setVisible(true);
        exit.setVisible(true);
    }

    public void actionPerformed(ActionEvent e)
    {

        if (e.getActionCommand().equals("Sort And List Student's Scores"))
        {
            /*
        }
            for (int index = 0; index < anArray.length - 1; index++)
            {   // Place the correct value in anArray[index]
                int indexOfNextSmallest = getIndexOfSmallest(index, anArray);
                interchange(index, indexOfNextSmallest, anArray);
                */
        }
        else if (e.getActionCommand().equals("Display Average Score for Each Student"))
        {

        }
        else if (e.getActionCommand().equals("Exit"));
        {
            int answer =
                       JOptionPane.showConfirmDialog(null, "End program?",
                                     "Click Yes or No:", JOptionPane.YES_NO_OPTION);

                  if (answer == JOptionPane.YES_OPTION)
                      System.exit(0);
        }
    }

}
4

1 に答える 1

0

括弧を使用して、ループ間にステートメントを含めて乗算する必要があります。

次に、一部の値が null にならない場合は、列インデクサーに別の変数名を使用します。

   for (int  column = 0; column < table_Columns_numbers  ; column++)

   for (int  row = 0; row < table_rows_numbers; row++)
   {

   //Statement 1   ask user to enter the value 

    JOptionPane.showInputDialog("Please enter the value"); 

   //Statement 2   assign the value to your multidimensional array 

    array[row][column] = the value entered


    }

コードの列番号はコース番号の番号です

行番号は学生番号の番号です。

したがって、 for ループを使用して、 col のコース番号に学生番号 index+1 のスコアを入力します。

そして、入力したスコア番号を表のセルに割り当てるたびに

for (int  col = 0; col < courseNumber; col++)

      for (int  index = 0; index < studentNumber; index++)
      {
      scoresString = JOptionPane.showInputDialog("Please enter the scores for Student " + (index+1));
      scores = Double.parseDouble(scoresString);

      //This is statement for explanation  

      System.out.println("scoresString  for student no \t"+(index+1)+"\t and course number \t"+ (col+1)+"\t"+scoresString);

     //Assigning value to   tableStudentScores[index][col] cell.

     tableStudentScores[index][col]=String.valueOf( scores);


    }

    JOptionPane.showMessageDialog( null ,Arrays.deepToString(tableStudentScores));
于 2013-12-05T08:39:09.970 に答える