티스토리 뷰
품목코드가 '111'와 '214'인 물건의 가격의 합계, 평균값, 최대값, 최소값, 최빈값, 총 개수 출력
Data.java
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Data {
private String url = "";
private int code;
private int total = 0;
private int max, min,avg;
private int modeMax;
private int modeCount;
//생성자
Data(String url, int code){
this.url = url;
this.code = code;
}
//ReadData method
List<Integer> ReadData(){
List<Integer> list = new ArrayList<Integer>();
try {
//데이터 읽어오기
FileReader fr = new FileReader(url);
BufferedReader br = new BufferedReader(fr);
String line = "";
while((line=br.readLine()) != null) {
if(line.split(",")[2].equals(""+code)) { //품목코드에 맞는 가격 추출 및 list에 저장
list.add(Integer.parseInt(line.split(",")[5]));
}
}
//예외처리
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("FileNotFound");
} catch (IOException e) {
System.out.println("IOException");
}
return list;
}
void DataAnalysis() {
List<Integer> price = ReadData();
max = price.get(0); //최대값을 초기화
min = price.get(0); //최소값을 초기화
for(int i=0; i<price.size(); i++) {
total += price.get(i); //총합값 계산
if(max < price.get(i))
max = price.get(i); //최대값이 price.get(i)보다 작으면 max에 price.get(i) 저장
if(min > price.get(i))
min = price.get(i); //최소값이 price.get(i)보다 크면 min에 price.get(i) 저장
}
avg = total/price.size();
//빈도수, 최빈값 계산
int[] mode = new int[max-min+1]; //빈도수 계산을 위한 int형 배열 mode 선언
//(데이터 최대값 - 최소값 + 1 = mode의 크기)
Arrays.fill(mode, 0); //mode를 전체 0으로 초기화
//빈도수 계산
for(int i=0; i<price.size(); i++) {
int tmp = price.get(i) - min; //tmp의 처음 값은 0
mode[tmp]++;
}
//최빈값 게산
modeMax = mode[0];
modeCount = min;
for(int i=0; i<mode.length; i++) {
if(modeMax<mode[i]) {
modeMax = mode[i];
modeCount = i+min;
}
}
}
@Override
public String toString() {
return "Data("+code+") [평균=" + avg + ", 합계=" + total + ", 최대값=" + max + ", 최소값=" + min
+ ", 빈도수=" + modeMax + ", 최빈값=" + modeCount + "]";
}
}
DataEx.java
public class DataEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
Data data = new Data("분석데이터 위치 url",111);
data.DataAnalysis();
System.out.println(data.toString());
Data data2 = new Data("분석데이터 위치 url",214);
data2.DataAnalysis();
System.out.println(data2.toString());
}
}
분석할 데이터