-2

まず第一に、私は正しい平均を見つける方法を知っています。だから今、私のプログラムの説明は次のとおりです-メソッド名nextGaussianを使用して正規分布数を取得しています。このメソッドは正常に機能しています。また、CONSOLE SCREENを使用して、正規分布数曲線を確認しました。平均(平均)値を見つけようとすると、エラーが発生します。

1.たとえば、5 つの数字 (30,50,60,70,80) があるとします。

  • まず最初に、それらの合計を見つけて 5 で割る必要がありますが、私のプログラムでは、最後の数を取り、この数を 5 で割ります。つまり、80 を取り、この数を 5 で割ります。

2.追加情報が必要な場合は、コメントを残してください。私はそれを行います...

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.text.NumberFormat;
import java.util.Arrays;
import java.util.Random;;
public class NormalNumberProblem extends JFrame 
{
    static JTextField a = new JTextField();
    static JButton x = new JButton();

  public static void main(String args[]) 
  {
    // construct frame
    new NormalNumberProblem().show();
  }
  public NormalNumberProblem() 
  {
    // frame constructor
    setTitle("NormalNumberProblem");

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    getContentPane().setLayout(new GridBagLayout());

    GridBagConstraints gridConstraints = new GridBagConstraints();
    a.setText("");
    a.setColumns(15);
    gridConstraints.gridx = 0;
    gridConstraints.gridy = 1;
    getContentPane().add(a, gridConstraints);

    x.setText("Random Numbers");
    gridConstraints.gridx =0;
    gridConstraints.gridy =3;
    getContentPane().add(x, gridConstraints);
    x.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent e) 
                {
                Random r = new Random();
                double[] list = new double[15];
                double mean = 10, std = 50;

                for(int i = 0; i<list.length; i++)
                {
                    double sum = 0;;
                    list[i] = r.nextGaussian() * 10 + 50;

                    sum += sum + list[i];
                    System.out.println(sum); 
                    double average = sum / list.length;
                    a.setText(" The mean is " + NumberFormat.getNumberInstance().format(average));   
                }
        }

        });

    pack();
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    setBounds((int) (0.5 * (screenSize.width - getWidth())), (int) (0.5 * (screenSize.height - getHeight())), getWidth(), getHeight());
  }


}

ありがとう....

4

2 に答える 2

2

次のようにループを変更する必要があります。

            double sum = 0;
            for(int i = 0; i<list.length; i++)
            {
                list[i] = r.nextGaussian() * 10 + 50;
                sum += list[i];
                System.out.println(sum); 
            }
            double average = sum / list.length;
            a.setText(" The mean is " + NumberFormat.getNumberInstance().format(average));   

ここで、ループから抜け出し、バグを修正しました(sumとの両方は必要ありません) 。averagesum += sum + list[i]+=sum +

于 2013-04-27T06:05:08.373 に答える
2

一部の要素をループの外に移動する必要があります (そうしないと、sum各反復を再定義し、最後に最後の番号になります)。

double sum = 0;
double average = 0;

for(int i = 0; i < list.length; i++)
                {
                    list[i] = r.nextGaussian() * 10 + 50;
                    sum = sum + list[i];
                    System.out.println(sum); 
                }

average = sum / list.length;
a.setText(" The mean is " + NumberFormat.getNumberInstance().format(average));  
于 2013-04-27T06:06:42.590 に答える