불초 구해주십시요 어레이 리스트 생성자 문제입니다
조회수 402회
public class Student {
int num;//힉번
int mj;//중간고사 점수
int fj;//기말점수
int rj;//레포트점수
int aj;//출석점수
int sum=0;//총점
float avg=0;//평균
char hak = 0;//학점
public Student(int num, int mj, int fj, int rj, int aj,int sum,float avg,char hak) {
this.num=num;//학번
this.mj=mj;
this.fj=fj;
this.rj=rj;
this.aj=aj;
this.sum = sum;
this.avg = avg;
this.hak = hak;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public float getAvg() {
return avg;
}
public void setAvg(float avg) {
this.avg = avg;
}
public char getHak() {
return hak;
}
public void setHak(char hak) {
this.hak = hak;
}
public Student(int num, int mj, int fj, int rj, int aj) {
this.num=num;//학번
this.mj=mj;
this.fj=fj;
this.rj=rj;
this.aj=aj;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return num + "\t" + mj + "\t"+fj+"\t"+rj+"\t"+aj+"\n";
}
public String toString2() {
// TODO Auto-generated method stub
return num + "\t" + mj +"\t"+fj+"\t"+rj+"\t"+aj+"\n"+sum+"\n"+avg+"\n"+hak+"\n";
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getMj() {
return mj;
}
public void setMj(int mj) {
this.mj = mj;
}
public Integer getFj() {
return fj;
}
public void setFj(int fj) {
this.fj = fj;
}
public int getRj() {
return rj;
}
public void setRj(int rj) {
this.rj = rj;
}
public int getAj() {
return aj;
}
public void setAj(int aj) {
this.aj = aj;
}
} //ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.ObjectInputStream.GetField; import java.util.ArrayList; import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
String start;//시작
int num=0;//힉번
int mj=0;//중간고사 점수
int fj=0;//기말점수
int rj=0;//레포트점수
int aj=0;//출석점수
int sum=0;//총점
float avg=0;//평균
float totalavg=0;//전체평균더한거
float totalhak=0;//전체평균 값
char hak = 0;//학점
int count=20;//학생수
ArrayList<Student> st = new ArrayList<Student>();//학생테이블
ArrayList<Student> st2 = new ArrayList<Student>();
String s;
BufferedReader bReader=null;
FileReader file= new FileReader(new File("C:\\Users\\parkjangsun\\Documents\\카카오톡 받은 파일\\점수현황.txt"));
bReader = new BufferedReader(file);
System.out.println("파일을 읽어 오겠습니다");
System.out.println("******학점계산기********");
System.out.println("\t학번\t"+"중간\t"+"기말\t"+"레포트\t"+"출석\t");
while((s = bReader.readLine()) != null) {
String [ ] str;
str=s.split("\t");
sum=mj+fj+rj+aj;
for (int i = 0; i < str.length; i++) {
str[i] = str[i].trim();
}
Student c=new Student(Integer.parseInt(str[0]),Integer.parseInt(str[1]),Integer.parseInt(str[2]),Integer.parseInt(str[3]),Integer.parseInt(str[4]));
st.add(c);
}
System.out.println(st);
while(true) {
try {
System.out.println("학생의 정보를 입력하시겠습니까? (y,n)");
Scanner sc=new Scanner(System.in);
start=sc.nextLine();
if(start.equalsIgnoreCase("y")) {
System.out.println("학생의정보를 입력해주세요");
for(int i=0;i<=st.size();i++) {
for(int y=0;y<=5;y++) {
switch(y) {
case 0://나중에하자 일단 파일 쓰는거부터 ㄱ
System.out.println("학번을 입력해주세요");
num=sc.nextInt();
for(int i1=0;i1<=st.size();i1++) {
if(st.get(i1).getNum()==num) {
System.out.println("학번이 같습니다 ");
}else if(st.get(i1).getNum()!=num) {
}
}
break;
case 1:
System.out.println("중간고사 점수를 기입해주세요");
mj=sc.nextInt();
break;
case 2:
System.out.println("기말고사 점수를 기입해주세요");
fj=sc.nextInt();
break;
case 3:
System.out.println("레포트 점수를 기입해주세요");
rj=sc.nextInt();
break;
case 4:
System.out.println("출석점수를 기입해주세요");
aj=sc.nextInt();
break;
}
}
count++;
Student c=new Student(num,mj,fj,rj,aj);// 학생 한명 정보 다입력
st.add(c);
//여기서 출력 하거나 arraylist에 추가해야함
break;
}//if y 눌렀을떄가 끝남
System.out.println("************학생목록****************");
System.out.println("학생수:"+count);
System.out.println(st);
}
if(start.equalsIgnoreCase("n")) {
System.out.println("정보를 수정하시겠습니까?( 1:수정, 2:삭제, 3:종료, 4:학점계산");
start=sc.nextLine();
if(start.equalsIgnoreCase("1")) {
System.out.println("************학생목록****************");
System.out.println(st);
System.out.println("수정할 학번의 숫자를 골라주세요");
int um=sc.nextInt();//비교할 숫자
for(int i=0;i<st.size();i++){
if(st.get(i).getNum()==um){
System.out.print("바꾸실 정보를 입력하세요. 0:종료,1:중간 ,2:기말,3:레포트,4:출석");
int ans=sc.nextInt();
switch(ans){
case 0:
break;
case 1:
System.out.println("바꿀 중간고사 점수를 기입해주세요");
mj=sc.nextInt();
st.get(i).setMj(mj);
System.out.println("변경되었습니다.");
break;
case 2:
System.out.println("바꿀 기말고사 점수를 기입해주세요");
fj=sc.nextInt();
st.get(i).setFj(fj);
System.out.println("변경되었습니다.");
break;
case 3:
System.out.println("바꿀 레포트 점수를 기입해주세요");
rj=sc.nextInt();
st.get(i).setRj(rj);
System.out.println("변경되었습니다.");
break;
case 4:
System.out.println("바꿀 출석점수를 기입해주세요");
aj=sc.nextInt();
st.get(i).setAj(aj);
System.out.println("변경되었습니다.");
break;
}//switch 바꾼거 종ㄹ
}//if문
}//for문종료
System.out.println(st);
}//if 문종료(수정)
if(start.equalsIgnoreCase("2")) {
System.out.println("************학생목록****************");
System.out.println(st);
System.out.println("삭제할 학번을 고르세요");
Integer um=sc.nextInt();//비교할 숫자
for(int i=0;i<st.size();i++){
if(st.get(i).getNum()==um){
System.out.println(um+"의학번의 정보를 삭제했습니다");
st.remove(i);
count--;
break;
}//삭제if안에있는문
}//삭제for문
}//if삭제문
if(start.equalsIgnoreCase("3")) {
break;
}
if(start.equalsIgnoreCase("4")) {
System.out.println("학점을 계산합니다 ");
System.out.println("************학생목록****************");
System.out.println("\t학번\t"+"중간\t"+"기말\t"+"레포트\t"+"출석\t"+"총점\t"+"평균\t"+"학점\t");
sum=0;
avg=0;
totalavg=0;
for(int i=0;i<st.size();i++) {
sum=st.get(i).getMj()+st.get(i).getFj()+st.get(i).getRj()+st.get(i).getAj();
avg=(sum/4);
totalavg=totalavg+avg;//전체평균더한거
}//전체평균 더한거 나오게하기
for(int i=0;i<st.size();i++){
sum=st.get(i).getMj()+st.get(i).getFj()+st.get(i).getRj()+st.get(i).getAj();
avg=(sum/4);
totalhak=totalavg/count;
if(avg>=totalhak+(totalhak*0.2)) {
hak='A';
}else if(avg>=totalhak && avg<totalhak+(totalhak*0.2)) {
hak='B';
}else if(avg<totalhak && avg>=totalhak-(totalhak*0.2)) {
hak='C';
}else if(avg<totalhak-(totalhak*0.2) && avg>=totalhak-(totalhak*0.2)) {
hak='D';
}else {
hak='F';
}
Student c=new Student(st.get(i).getNum(),st.get(i).getMj(),st.get(i).getFj(),st.get(i).getRj(),st.get(i).getAj(),sum,avg,hak);
st2.add(c);
}
System.out.println(st2);
}//4번 종료
}//if문 n종료
}catch (Exception e) {
System.out.println("다시해봐");
}
}
} }
st2.add(c)이부분에서 sum,avg,hak이 st2에 들어가지질않는데 이유를 모르겠습니다...알려주세요...
댓글 입력