본문 바로가기

콩's EDUCATION/콩's JAVA_RUN

Tokenizer 문자열 분리

Tokenizer 예제


 

import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; import java.util.StringTokenizer; class Student{ private String name; private int kor, eng, mat; public Student(String name, int kor, int eng, int mat) { this.name = name; this.kor = kor; this.eng = eng; this.mat = mat; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getKor() { return kor; } public void setKor(int kor) { this.kor = kor; } public int getEng() { return eng; } public void setEng(int eng) { this.eng = eng; } public int getMat() { return mat; } public void setMat(int mat) { this.mat = mat; } } public class StudentTest { public static void main(String[] args) throws IOException{ /*1.현재프로젝트 student.dat 파일 내용 입력 * FileReader + Scanner:nextLine():한 라인(s) 2.분리자로 분리해서 Student 객체로 생성 3.현재상태 : 5개 Student 의 kor 만 총합 / 평균 4. 5개 Student 의 eng 만 총합 / 평균 5. 5개 Student 의 mat 만 총합 / 평균 6. 총학생수=student객체갯수 7. 총학생수 각 과목별 총점 평균 student.dat 파일 추가출력 */ FileReader fr = new FileReader ("student.dat"); Scanner sfr = new Scanner(fr); ArrayList<Student> list = new ArrayList<Student> (); while(sfr.hasNextLine()==true){//eof //sfr.useDelimiter("[/:-]"); String line = sfr.nextLine(); StringTokenizer token = new StringTokenizer(line, "/:-"); String name = null; int kor = 0; int eng = 0; int mat = 0; while(token.hasMoreTokens() == true){ name = token.nextToken(); token.nextToken(); kor = Integer.parseInt (token.nextToken()); token.nextToken(); eng = Integer.parseInt (token.nextToken()); token.nextToken(); mat = Integer.parseInt (token.nextToken()); } Student st = new Student (name, kor, eng, mat); list.add(st);//5번 }//while end //list : 파일 입력 내용 분리. 5개 객체 생성;저장 //list 각 객체의 각 과목별 점수 총합/평균 int sumOfKor = 0, sumOfEng = 0, sumOfMat = 0; int avgOfKor = 0, avgOfEng = 0, avgOfMat = 0; for(int i = 0; i < list.size(); i++){ Student st = list.get(i); sumOfKor += st.getKor(); sumOfEng += st.getEng(); sumOfMat += st.getMat(); } avgOfKor = sumOfKor / list.size(); avgOfEng = sumOfEng / list.size(); avgOfMat = sumOfMat / list.size(); //총학생수 //각 목별 총합 / 평균 //==> student.dat 파일(이미 존재, 저장내용그대로유지) 출력 FileWriter fw = new FileWriter("student.dat", true); fw.write("\n"); fw.write ("=========================\n"); fw.write ("총학생수=" + list.size() +"\n"); fw.write ("국어총합 =" + sumOfKor + "국어평균=" + avgOfKor +"\n"); fw.write ("영어총합 =" + sumOfEng + "영어평균=" + avgOfEng +"\n"); fw.write ("수학총합 =" + sumOfMat + "수학평균=" + avgOfMat +"\n"); //fw.write -> (자바프로그램 임시 저장 버퍼공간 ) //close -> 최종 파일 출력 fw.close(); } } /* //String / StringTokenizer / Scanner / String s="이자바-국어:80/영어:90/수학:100"; String ss[] = s.split("[/:-]"); System.out.println(ss.length); System.out.println(ss[0]); System.out.println(ss[2]); System.out.println(ss[4]); System.out.println(ss[6]); */ /* StringTokenizer st = new StringTokenizer(s, "/:-"); //s:"이자바-국어:80/영어:90/수학:100" //st : 이자바, 국어, 80, .... while(st.hasMoreTokens()){ System.out.println(st.nextToken()); if(st.hasMoreTokens())st.nextToken(); } Scanner sc = new Scanner(s); sc.useDelimiter("[/:-]"); while(sc.hasNext()){ sc.next(); }//숫자로 사용 : Integer.parseInt(sc.next()) */