7: 平均値と標準偏差の算出例
PSPday1.java
//----------------------------------------------
// Program Assignment: PSPday1
// Name: Shinobu Minamikawa
// Date: 03/12/2007
// Description: read two types of values and
// calculating means and Standard Deviation:
// To compile: javac PSP1P1Pa.java
// To run: java PSP1P1Pa PSP1PIn.txt
//----------------------------------------------
import java.io.*;
class PSP1P1Pa {
public static void main(String args[]) {
try {
//--------------------------------------------
// FileReader object
FileReader fr = new FileReader(args[0]);
// BufferedReader object
BufferedReader br = new BufferedReader(fr);
// StreamTokenizer object
StreamTokenizer st = new StreamTokenizer(br);
// "comma" as a blank character
st.whitespaceChars(',', ',');
//--------------------------------------------
// Variables
double size_array[] = new double[100];
double size_SD_array[] = new double[100];
double size = 0.0;
double total_size = 0.0;
double mean_size = 0.0;
double total_SD_size = 0.0;
double SD_size = 0.0;
double hours_array[] = new double[100];
double hours_SD_array[] = new double[100];
double hours = 0.0;
double total_hours = 0.0;
double mean_hours = 0.0;
double total_SD_hours = 0.0;
double SD_hours = 0.0;
int n = 0; // the number of the items
boolean is_size = true;
//--------------------------------------------
// Main Process
//--------------------------------------------
//--------------------------------------------
// reading the input table into arrays
while(st.nextToken() != StreamTokenizer.TT_EOF) {
switch(st.ttype) {
case StreamTokenizer.TT_WORD:
break;
case StreamTokenizer.TT_NUMBER:
if (is_size)
{
size_array[n] = st.nval;
is_size = false;
}
else
{
hours_array[n] = st.nval;
is_size = true;
n += 1;
};
break;
default:
;
}
}
//-----------------------------------------------
//calculating_1: mean
for(int num = 0; num < n; num = num +1)
{
total_size = total_size + size_array[num];
total_hours = total_hours + hours_array[num];
};
mean_size = total_size / n;
mean_hours = total_hours / n;
//-----------------------------------------------
//calculating_2: Standard Deviation
//-----------------------------------------------
//--------------------------------------------
for(int num = 0; num < n; num = num +1){
size_SD_array[num] = size_array[num] - mean_size;
hours_SD_array[num] = hours_array[num] -mean_hours;
};
//--------------------------------------------
for(int num = 0; num < n; num = num +1){
size_SD_array[num] = size_SD_array[num] * size_SD_array[num];
hours_SD_array[num] = hours_SD_array[num] * hours_SD_array[num];
};
//--------------------------------------------
for(int num = 0; num < n; num = num +1) {
total_SD_size = total_SD_size + size_SD_array[num];
total_SD_hours = total_SD_hours + hours_SD_array[num];
};
SD_size = total_SD_size / (n-1);
SD_size = Math.sqrt(SD_size);
SD_hours = total_SD_hours / (n-1);
SD_hours = Math.sqrt(SD_hours);
float fnum1 = (float)mean_size;
float fnum2 = (float)mean_hours;
float fnum3 = (float)SD_size;
float fnum4 = (float)SD_hours;
//--------------------------------------------
//printing the result
//--------------------------------------------
System.out.println("Mean" + " " + "Std. Dev");
System.out.println(fnum1 + " " + fnum3);
System.out.println(fnum2 + " " + fnum4);
//-----------------------------------------------
//close this process
//-----------------------------------------------
fr.close();
}
catch(Exception e)
{
System.out.println("Exception:" + e);
}
}
}