0
배열에서 입력 된 숫자의 평균 및 표준 편차를 구하는 프로그램을 만들고 있습니다. 나는 단 한가지에만 붙어 있습니다 : 평균과 표준 편차가 반환 될 때마다 그것은 Not a Number로 나타납니다. 코드에 어떤 문제가 있습니까? 여기 NaN으로 반환하는 평균 및 표준 편차 메서드
는 방법이다 :public mainFrame() {
initComponents();
}
private double avg;
private double stdDeviation;
private double[] gradeArray;
/**
*
* @param gradeArray
* @param numElem
* @return
*/
public double getAverage (double[] gradeArray, int numElem) {
double sum = 0;
for(int i=0;i<numElem;i++){
sum = sum + gradeArray[i];
}
return (sum/numElem);
}
public double getStdDev (double[] gradeArray, int numElem, double avg){
double sum = 0;
for(int i = 0;i<numElem;i++){
sum = sum + Math.pow((gradeArray[i]-avg),2);
}
return Math.sqrt(sum/numElem);
그리고 여기에 "성적 입력"이벤트 코드가 버튼에 클릭 :
final int SIZE = 25;
double[] gradeArray = new double[SIZE];
String s;
int numElem = 0;
double average = 0;
for(int i=0;i<=SIZE;i++){
s = (String)JOptionPane.showInputDialog("Enter Grade","");
if (s == null || s == ("")){
break;
}
else{
try{
gradeArray[i] = Double.parseDouble (s);
average = getAverage(gradeArray,numElem);
stdDeviation = getStdDev(gradeArray,numElem,avg);
txtGradeEntered.setText(1 + i + "");
txtMean.setText(average +"");
txtStdDev.setText(stdDeviation+"");
}
catch (NumberFormatException e){
JOptionPane.showMessageDialog(null, "Your input must be numeric!","Bad Data!",0);
}
catch (ArrayIndexOutOfBoundsException e){
JOptionPane.showMessageDialog (null, "You can only input 25 values!","Too much data!",0);
}
}
}
디버거를 사용해 보셨습니까? –
'numElem'은 0에서 시작합니다.'getAverage'에서는 따라서 0으로 나눕니다. –