반응형
public static void main(String[] args) throws IOException {
// [한 반에 30명 학생의 이,국,영,수,총,평,등 입력/등수/출력 ]
final int STUDENT_COUNT = 30;
// 클래스(객체) 배열
Student[] students = new Student[STUDENT_COUNT];
int cnt = 0 ;
char con = 'y';
String name;
int kor, eng, mat, tot, rank;
double avg;
Scanner scanner = new Scanner(System.in);
do {
// 입력.
System.out.print("> 이름 국어 영어 수학 정보 입력 ? ");
name = getName();
kor = getScore();
eng = getScore();
mat = getScore();
tot = kor + eng + mat;
avg = (double)tot/3;
rank = 1;
students[cnt] = new Student(); // 4
students[cnt].no = cnt + 1;
students[cnt].name = name;
students[cnt].kor = kor;
students[cnt].eng = eng;
students[cnt].mat = mat;
students[cnt].tot = tot;
students[cnt].avg = avg;
students[cnt].rank = rank;
cnt++; // 1
//
System.out.print("> 학생 입력 계속 ? ");
con = (char)( System.in.read() );
System.in.skip(System.in.available());
} while ( Character.toUpperCase(con) == 'Y' );
// 등수처리
// 1. 등수 처리하는 메섣 : getRank()
// 2. 매개변수
// 3. 리턴값, 리터자료형
for (int i = 0; i < cnt; i++) {
students[i].rank = getRank(i+1, students);
}
System.out.printf("> 입력받은 학생수 : %d명 \n", cnt );
for (int i = 0; i < cnt ; i++) {
System.out.println( students[i].getStudentInfo() );
}
} // main
// 4:05 수업 시작~
// 학생의 번호를 입력하면 등수를 반환하는 함수 선언
public static int getRank( int no, Student[] students) {
// 총점
int tot = students[no-1].tot;
// 모든 학생의 총점 비교 tots 배열
int rank = 1;
for (int j = 0; j < students.length; j++) {
if( students[j] == null ) break;
if( tot < students[j].tot ) rank++; // students[j].tot X NullPointException
}
return rank;
}
public static int getScore() {
return (int)( Math.random()*101 ) ;
}
public static String getName() {
char [] nameArr = new char[3];
Random rnd = new Random();
for (int i = 0; i < nameArr.length; i++) {
nameArr[i] = (char)( rnd.nextInt('힣' - '가' + 1) + '가' );
}
String name = new String( nameArr );
return name;
}
private static int getTotalScore() {
return (int)( Math.random()*301 ) ;
}
public static String getAlphabetName(int len) {
char [] nameArr = new char[len];
Random rnd = new Random();
int index = 0;
while( index < len) {
int code = rnd.nextInt('z' - 'A' + 1) + 'A' ;
if( Character.isAlphabetic(code) ) {
nameArr[index++] = (char)code;
} // if
} // while
String name = new String( nameArr );
return name;
}
} // class
public static void main(String[] args) {
// 클래스 2차원 배열
Student [][] students = new Student[3][30];}
}
public static void main(String[] args) {
/*
* 1. 클래스 앞에 붙는 접근지정자, 기타제어자 설명. ( 암기 )
* 2. 멤버( 필드, 메서드, 생성자 constructor ) 앞에 붙는 접근지정자 설명 ( 암기 )
* 1) public - 패키지 내부 /외부 어디서나 접근(참조) 가능
* 2) default - 같은 패키지 내부에서만 접근(참조) 가능
* 3) protected - defulat + 상속( 다른 패키지의 자식 클래스에 접근(참조) 가능 )
* 4) private - 같은 클래스 내에서만 접근(참조) 가능
*
* 범위 : public > protected > default > private
*
* 지역변수에는 접근 지정자를 사용할 수 없다.
* */
// public days14.Time 클래스 - 패키지 내부/외부 어디서나 참조/상속 가능
// days14.Ex08.main(){} 같은 패키지 안.. 테스트
Time t = new Time();
// t.멤버 ( 필드, 메서드 )
// t.hour O public
// t.minute O defalut
// t.second O protected
// t.nano O public
// t.milisecond X private 같은 클래스 에서만 참조(접근) 가능
// days01.Ex01.main(){} 다른 패키지 테스트
} // main
} // class
public class Ex09 {
// [ 멤버 변수 == 필드 ]
// "인스턴스 변수" 선언 형식
// [접근지정자] [ 기타제어자] 자료형 필드명;
public String name = null;
public int age = 0;
public boolean gender = false;
// "클래스 변수"
// static 기타제어자가 붙어있는 필드
public static double PI = 3.141592;
// 멤버 함수 == 메서드
public static void main(String[] args) {
/*
* [ 변수 종류] - 선언되는 위치를 기준으로 변수 구분
* 1. 지역변수 - 해당 영역(지역)에서만 사용되는 변수/ 변수 선언문을 실행할때 / 해당 영역 빠져나올때
*
* 필드( field )
* 2. 인스턴스 변수 - / 인스턴스가 생성될 때 / 인스턴스 소멸될 때
* - 초기화 하지 않아도 그 자료형의 기본값으로 초기화 되어져 있다.
* 3. 클래스 변수 / 해당 클래스가 메모리에 올라갈때 / 프로그램 종료할때
* ( 프로그램 시작할 때 )
* */
int age; // 지역변수
} // main
} // class
package days14;
// package( == default ) 접근지정자를 선택.
class Person {
// fields
public String name;
public int age;
// methods
public void walk() {
System.out.println("사람이 걷는다.");
}
public void run() {
System.out.printf("%s이 뛴다\n", name);
}
}
객체 배열 초기화
public static void main(String[] args) {
// 저축 클래스 선언 : Save
// 기업은행 : 보통 예금 통장
/*
Save p1 = new Save("김예지", 10000, 0.05);
Save p2 = new Save("이혜진", 4000, 0.05);
Save p3 = new Save("박민종", 16000, 0.05);
Save p4 = new Save("이태규", 65000, 0.05);
Save p5 = new Save("탁인혁", 1000, 0.05);
// 모든 예금 정보 출력(조회)
p1.dispSave();
p2.dispSave();
p3.dispSave();
p4.dispSave();
p5.dispSave();
*/
// 객체(클래스) 배열
/*
* int [] m = new int[5];
* m[0] = 1;
* m[1]=2;
* m[2] = 3;
* m[3]=4;
* m[4]=5;
*
* 배열 초기화
* int [] m = { 1,2,3,4,5 }
*/
/*
Save [] ps = new Save[5];
ps[0] = new Save("김예지", 10000, 0.05);
ps[1] = new Save("이혜진", 4000, 0.05);
ps[2] = new Save("박민종", 16000, 0.05);
ps[3] = new Save("이태규", 65000, 0.05);
ps[4] = new Save("탁인혁", 1000, 0.05);
*/
// 객체 배열 초기화
Save [] ps = {
new Save("김예지", 10000, 0.05),
new Save("이혜진", 4000, 0.05),
new Save("박민종", 16000, 0.05),
new Save("이태규", 65000, 0.05),
new Save("탁인혁", 1000, 0.05)
} ;
for (int i = 0; i < ps.length; i++) {
ps[i].dispSave();
}
} // main
} // class
public static void main(String[] args) {
MyPoint p1 = new MyPoint(10, 20);
// 객체 복사
MyPoint p2 = p1;
test( p1 );
// 원래 객체는 유지시키고 테스트 / ~
// p1 객체 복제( clone )
MyPoint p3 = new MyPoint( p1.x, p1.y );
} // main
public static void test( MyPoint p) { // 객체 복사..
}
} // class
'취준 note 2023 > 객체' 카테고리의 다른 글
JAVA 객체지향-클래스 인스턴스 메서드 (1) | 2023.01.21 |
---|---|
객체지향의 사실과 오해- 인터페이스, 추상화 (0) | 2022.12.28 |
객체지향의 사실과 오해 (0) | 2022.12.28 |
JAVA 객체지향-클래스 인스턴스 메서드 (2) | 2022.11.29 |
JAVA 객체지향 개념 한번에 정리하기 (0) | 2022.11.06 |