* 배열
:: 같은 데이터형을 갖는 변수들의 집합
>> 배열변수에 접근은 index로 접근가능(index는 0부터 시작)
>> index pattern과 data pattern을 활용
>> data pattern이 존재 >> 저장, 호출 반복문을 사용
>> data pattern이 존재 X >> 호출시 반복문 사용
1. new 연산자를 사용하여 heap에 할당
>> int[] i = new int[5];
>> Array.length 현재 배열로 선언된 변수의 갯수
2. 선언과 동시에 초기값을 지정
성적 계산기 만들기
Array.java
package array;
public class Array {
public static void main(String[] args) throws java.io.IOException {
/* 성명 반 번호 국어 수학 영어 과학 사회 총점 평균 평점
* 개인정보 배열 선언
* 과목 배열 선언
*/
INOUT io = new INOUT();
J_Array arr = new J_Array(io.comments,io.item);
io.Output(arr.Result());
}
}
그림 1.
INOUT.java
/*
* 입 출력을 전담하는 클래스
* 1. 프로그램 타이틀 출력
* 2. 입력기능
* 3. 출력기능
*/
package array;
import java.util.Scanner;
import java.io.IOException;
public class INOUT {
//1차원 배열
public String[] comments = {"성명", "반", "번호", "국어", "수학", "영어", "과학", "사회", "총점", "평균", "평점"};
public String[] item = new String[11];
private Scanner sc = new Scanner(System.in);
public INOUT() throws IOException{
// 생성자 >> 인스턴스 변수의 초기화
Output(Title());
for(int i=0; i<item.length-3; i++){
Output(comments[i] + " : ");
item[i] = ReadData();
}
}
private String Title(){
String title = "";
title += "----------------------------------------------------------\n";
title += " 성적 계산기\n";
title += "----------------------------------------------------------\n";
return title;
}
private String ReadData() throws IOException{
return sc.nextLine();
}
private void Output(String o){
System.out.print(o);
}
public void Output1(){
System.out.println();
}
public void Output(String [][] results){ //J_Array.java에 result값을 넘겨온것임
System.out.println(Title());
int cnt = 0;
while(true){
for(int i = 0; i < 11; i++){
System.out.print("\t"+results[cnt][i]);
}
cnt++;
if ( cnt >= 2 ){break;}
System.out.println();
}
Output1();
}
}
그림 2.
J_Arrary.java
package array;
public class J_Array {
public String [] comments, item;
public J_Array(String [] comm, String it[]){ //초기값 지정해주는
comments = comm;
item = it;
Evalue();
}
private int Sum(){ //합계 구하는 메서드
int tot = 0;
for(int i = 3; i < 8; i++ ){
tot += Integer.parseInt(item[i]);
}
item[8] = String.valueOf(tot);
return tot;
}
private float Avg(){ //평균 구하는 메서드 총점 / 과목갯수 5
float avg = 0.00f;
avg = Sum() / 5f;
item[9] = String.valueOf(avg);
return avg;
}
private void Evalue(){ //평점 구하는 방식
float a = Avg();
int e = (int)(a/10);
String ev;
switch(e){
case 10 : ev = "A"; break;
case 9 : ev = "A"; break;
case 8 : ev = "B"; break;
case 7 : ev = "C"; break;
case 6 : ev = "D"; break;
default : ev = "F";
}
item[10] = ev;
}
public String[][] Result(){
String[][] results = {comments,item};
return results;
}
}
그림 3.