[java]ArrayList (자동배열)로 성적 입력 프로그램 만들기

2024. 8. 18. 09:30·JAVA
반응형

 

20240814수업

배열과 ArrayList의 차이

배열

  • 이름과 type이 같은 변수 모은 것
  • 한번만들어지면 크기가 바뀌지 않는다.
  • ex)인원수가 바뀌는 성적처리를 할때(배포) 매번 업데이트해주어야하는 불편함>>ArrayList 사용
  • 사이즈가 정해진거에 용이

ArrayList

  • 이름과 type이 같은 변수 모은 것
  • 실행할떄 크기가 변경될 수 있다
  • 타입이 다른것이 들어갈 수 있다.
  • 특별한 설정이 없다면 al의 요소는 Object(정수, 문자, 문자열, 실수 등)타입이다.
  • old방식 : java1.5

 

 

ArrayList
ArrayList 변수명=new ArrayList()

 

ArrayList 기본 예시

ArrayList al = new ArrayList();

 

al.add(1);

al.add("민지");

al.add('A');

 

 

int val1=(int) al.get(0); //ArrayList를 사용할때의 단점: 형변환이 필요하다.

System.out.println(val1);

String val2=String.valueOf(al.get(1));

//(String)al.get(1);은 코드가 복잡해질때 오류발생>>Object를 String으로 casting할때 valueOf를 써야함.

System.out.println(val2);

 

System.out.println(al.size()+","+al.get(0));

System.out.println(al.size()+","+al.get(1));

System.out.println(al.size()+","+al.get(2));

 

ArrayList요즘방식-generic

//<T>:T- class type(reference) ~> 참고:[java]정렬하기(Sort), 람다식

//int:primitive type

//ArrayList<int> al2=new ArrayList<int>();>>오류∵)class type이 아니라서 ->Integer

ArrayList<Integer> al2=new ArrayList<Integer>(); //Int값만 저장 가능한 ArrayList

al2.add(100); //0

al2.add(70); //1

al2.add(80);//2

//al2.add("민지"); >> error

System.out.println(al2.get(0));

System.out.println(al2.get(1));

System.out.println(al2.get(2));

 

for (int i = 0; i < al2.size(); i++) {

System.out.println(al2.get(i));

}

 

번호,이름,국어,영어,수학
1,사나,70,80,90
2,모모,0,70,100
3,쯔위,70,90,90
4,정연,80,90,70
5,카리나,100,99,79
6,윈터,50,75,87

ArratList는 표준문법이 아니기 때문에 import java.util.ArrayList가 필요하다.


static ArrayList<Integer>num=new ArrayList<>();

static ArrayList<String>name=new ArrayList<>();

static ArrayList<Integer>kor=new ArrayList<>();

static ArrayList<Integer>eng=new ArrayList<>();

static ArrayList<Integer>mat=new ArrayList<>();

static ArrayList<Integer> tot =new ArrayList<>();

static ArrayList<Double> avg =new ArrayList<>(); //double을 클래스로 만들때는 Double , Boolean, Character

static ArrayList<Character> grade =new ArrayList<>();

최상위클래스에 ArrayList를 작성한다.

public static void main(String[] args) {

intput();

process();

output();

}

메인클래스에서 각각의 클래스들을 호출한다.(input,process,output에서 void로 인해 return된다.)

private static void intput() {

Scanner in = new Scanner(System.in);

System.out.println("번호,이름,국어,영어,수학");

 

for (; ; ) { //무한 루프:조건이 무조건 참이므로

String line=in.nextLine();

if(line.trim().equals("exit")) break; //exit가 나오면 반복문을 중지

 

String[]li=line.trim().split(",");

num.add(Integer.parseInt(li[0].trim()) );

//해석:li[0]을 숫자로 바꾸고(parseInt) 공백을 없앤(trim) 후 num에 넣는다(num.add)

name.add(li[1].trim());

kor.add(Integer.parseInt(li[2].trim()));

eng.add(Integer.parseInt(li[3].trim()));

mat.add(Integer.parseInt(li[4].trim()));

}

}

private static void process() {

// 0 1 2 3 4 5 6 7 8 9 10

char [] g= {'F','F','F','F','F','F','D','C','B','A','A'};

for (int i = 0; i < num.size(); i++) {

tot.add(kor.get(i)+eng.get(i)+mat.get(i));//get:클래스 문법

avg.add(tot.get(i)/3.0);

grade.add(g[(int) (avg.get(i)/10)]);

}

↑grade계산법1

for(int i=0;i<num.size();i++) {

tot.add((kor.get(i)+eng.get(i)+mat.get(i)));

avg.add((double)tot.get(i)/3);

double val = avg.get(i);

switch((int)val/10) {

case 10 : grade.add('A'); break;

case 9 : grade.add('B'); break;

case 8 : grade.add('C'); break;

case 7 : grade.add('D'); break;

case 6 : grade.add('E'); break;

default : grade.add('F');

}

↑grade계산법2

private static void output() {

String title="번호 이름 국어 영어 수학 총점 평균 학점";

System.out.println(title);

for (int j = 0; j < num.size(); j++) {

System.out.printf("%d %s %d %d %d %d %.2f %c\n",

num.get(j), name.get(j), kor.get(j), eng.get(j), mat.get(j), tot.get(j), avg.get(j), grade.get(j));

}

}

결과

exit를 입력하기 전까지 계속 성적을 입력할수 있음

반응형

'JAVA' 카테고리의 다른 글

[java]getter/setter  (0) 2024.08.18
[java]Constructor, Override  (0) 2024.08.18
[java]정규식 (Regular Expression)  (0) 2024.08.17
[java] String 함수 총정리  (0) 2024.08.15
[java] 주민등록번호, 사업자 등록번호 유효성 검사  (0) 2024.08.15
'JAVA' 카테고리의 다른 글
  • [java]getter/setter
  • [java]Constructor, Override
  • [java]정규식 (Regular Expression)
  • [java] String 함수 총정리
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (154)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (16)
      • 기타 (5)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (0)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
      • 자료구조&알고리즘 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    tag
    link
    SQL
    개발자
    input
    HTML
    JS
    태그
    오블완
    javascript
    자기계발
    db
    티스토리챌린지
    링크
    일지
    AJAX
    부트캠프
    JQuery
    CSS
    java
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
라텐느
[java]ArrayList (자동배열)로 성적 입력 프로그램 만들기
상단으로

티스토리툴바