package chapter_05;
import java.util.Scanner;
public class Exam06 {
public static void main(String[] args) {
// 선택 미션
boolean run = true;
int studentNum = 0;
int scores[] = null;
Scanner sc = new Scanner(System.in);
while(run) {
System.out.println("--------------------------------------------------");
System.out.println("1. 학생 수 | 2. 점수 입력 | 3. 점수 리스트 | 4. 분석 | 5. 종료");
System.out.println("--------------------------------------------------");
System.out.print("선택 > ");
int selectNo = Integer.parseInt(sc.nextLine());
if(selectNo == 1) { // 1. 학생 수 입력
System.out.print("학생 수 > ");
studentNum = sc.nextInt(); // 학생 수를 입력받음
scores = new int[studentNum]; // 받은 학생 수로 점수 배열 생성
}
else if(selectNo == 2) { // 2. 점수 입력
for(int i = 0; i < studentNum; i++) {
System.out.print("scores[ " + i + "] > " );
scores[i] = sc.nextInt(); // 학생 수 만큼 점수 입력받음
System.out.println();
}
}
else if(selectNo == 3) { // 점수 리스트 보기
for(int i = 0; i < studentNum; i++) {
System.out.print("scores[ " + i + "] > " );
System.out.println(scores[i] + "\n"); // 입력받은 점수 출력
}
}
else if(selectNo == 4) { // 최고 점수, 평균 점수 구하기
int sum = 0; // 총합
int max = 0; // 최고 점수
for(int score : scores) {
sum += score; // 총합에 점수를 누적
if(max < score)
max = score; // max보다 클 경우 값을 바꿔줌
}
System.out.println("최고 점수 : " + max);
System.out.println("평균 점수 : " + (double)sum / scores.length); // 평균점수 구하기
}
else if(selectNo == 5) { // 프로그램 종료
run = false; // false로 while문을 빠져나감
}
}
System.out.println("프로그램 종료");
}
}
if(조건식) {
// 조건식이 true이면
안쪽 실행문 실행
}
// 조건식이 false면
바깥쪽 실행문 실행
if(조건식) {
// 조건식이 true이면
실행문 실행
}
else {
// 조건식이 false면
실행문 실행
}
if(조건식) {
// 조건식이 true이면
실행문 실행
}
else if(조건식) {
// if문의 조건식이 false이고, else if문의 조건식이 true이면
실행문 실행
}
else {
// 앞선 조건식 모두가 false면
실행문 실행
}
Math.random()
연산자 사용하기
(int)(Math.random() * 6) + 1
: 1~6까지의 정수를 returnpublic class IfDiceExample {
public static void main(String[] args) {
int num = (int)(Math.random() * 6) + 1;
if(num == 1) {
System.out.println("1번");
}
else if(num == 2) {
System.out.println("2번");
}
else if(num == 3) {
System.out.println("3번");
}
else if(num == 4) {
System.out.println("4번");
}
else if(num == 5) {
System.out.println("5번");
}
else {
System.out.println("6번");
}
}
}
switch(변수) {
case 값1 : // 변수가 값1일 경우
실행문1
break;
case 값2 : // 변수가 값2일 경우
실행문2
break;
default : // 변수가 값1, 값2 둘다 아닌 경우
실행문3
}
public class SwitchStringExample {
public static void main(String[] args) {
// char, int 타입으로도 switch문 모두 가능
String position = "학생";
switch(position) {
case "학생" :
System.out.println("학생 입니다.");
break;
case "선생님" :
System.out.println("선생님 입니다.");
break;
default :
System.out.println("학부모 입니다.");
}
}
}
출처 : 혼자 공부하는 자바
public class ForMultiplicationTableExample {
public static void main(String[] args) {
for(int i = 2; i <= 9; i++) {
System.out.println("-------- " + i + "단 ---------");
for(int j = 1; j <= 9; j++) {
System.out.println(i + " * " + j + " = " + i*j);
}
}
}
}
break문
과 함께 사용함public class BreakOutterExample {
public static void main(String[] args) {
Outter: for(char upper='A'; upper <= 'Z'; upper++) {
for(char lower = 'a'; lower <= 'z'; lower++) {
System.out.println(upper + " - " + lower);
if(lower == 'g') {
break Outter;
}
}
}
System.out.println("종료");
}
}
public class ContinueExample {
public static void main(String[] args) {
for(int i = 1; i <= 10; i++) {
if(i % 2 == 1) {
continue;
}
System.out.println(i);
}
}
}
// 기본 타입
int age = 18;
// 참조 타입
String name = "다율";
메소드(Method) 영역
힙(heap) 영역
JVM 스택 영역
// 예시
char v1 = 'A';
if(v1 == 'A) {
int v2 = 100;
double v3 = 3.14; // v2, v3는 if문을 빠져나가면 없어짐
}
boolean v4 = true;
다시 기억을 되살려 보자면.. (stack --참조>> heap)
stack | heap |
---|---|
변수와 주소값(번지값) | 실제 값 |
// 예시
int[] Array = null; // 참조 변수는 null로 초기화가 가능
Array[0] = 10; // NullPointerException 발생
// 예시
// 문자열 리터럴로 생성 시 : 동일한 String 객체 참조
// 비교 연산자로 비교하면 서로 같다고 나옴
String name1 = "다율";
String name2 = "다율";
// new 연산자로 생성 시 : 힙 영역에 새로운 객체를 만들어 각각 참조
// 비교연산자로 비교하면 서로 다르다고 나옴
String name2 = new String("다율");
String name3 = new String("다율");
.equal
연산자로 내부 문자열을 비교하는 연산자를 사용함int a[];
double b[];
String c[];
값 목록으로 배열 생성
int a[] = {1, 2, 3, 4, 5};
String names[] = {"홍길동", "감자바"};
// 메소드의 매개값이 있을 때
int result = add(new int[] {95, 99, 100})
new 연산자로 배열 생성
int a[] = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
배열의 초기값
.length
: 배열의 길이를 뜻함// 예시
public class ArrayCreateByValueListExample {
public static void main(String[] args) {
int sum = add(new int[] {83, 90, 87});
System.out.println("총합 : " + sum);
} // main
public static int add(int scores[]) {
int sum = 0;
for(int i = 0; i < scores.length; i++) {
sum += scores[i];
}
return sum;
} // add
}
// 예제
public class MainStringArrayArgument {
public static void main(String[] args) {
if(args.length != 2) { // 입력 데이터가 2개가 아닐때
System.out.println("값의 수가 부족합니다.");
System.exit(0); // 프로그램 강제 종료
}
String strNum1 = args[0];
String strNum2 = args[1];
int num1 = Integer.parseInt(strNum1); // 문자열을 정수로 변환
int num2 = Integer.parseInt(strNum2);
int result = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + result);
}
}
결과값 : 10 + 30 = 40
int scores[][] = new int[2][3];
scores.length // 2
scores[0].length // 3
int a[][] = {{1, 2, 3}, {4, 5, 6}};
--------------------------------
// 사진 참고
int scores[][] = new int[2][];
scores[0] = new int[2];
scores[1] = new int[3];
.equals
사용하기)public class ArrayReferenceObjectExample {
public static void main(String[] args) {
String strArray[] = new String[3];
strArray[0] = "Java";
strArray[1] = "Java";
strArray[2] = new String("Java");
System.out.println(strArray[0] == strArray[1]);
System.out.println(strArray[0] == strArray[2]);
System.out.println(strArray[0].equals(strArray[2]));
// true
// false
// true
}
}
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
메소드를 사용함
src
값은 원본 배열(복사할 배열)이고, srcPos
는 원본 배열에서 복사할 항목의 시작 인덱스dest
값은 새 배열(붙여넣어질 배열)이고, destPos
는 새 배열에 붙여넣을 시작 인덱스length
는 복사할 개수 (전체를 복사하려면 원본배열.length
)// 예제
public class ArrayCopyExample {
public static void main(String[] args) {
String oldStrArray[] = {"java", "array", "copy"};
String newStrArray[] = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);
for(int i = 0; i < newStrArray.length; i++) {
System.out.print(newStrArray[i] + ", ");
}
}
}
:
을 사용함// 예시
int scores[] = {95, 96, 97, 99, 100};
int sum = 0;
for(int score : scores) {
sum += score;
}
public enum Week { // 열거 타입 이름 : Week
MONDAY, // 열거 상수들
TUESDAY,
WEDNESDAY,
FRIDAY
}
Week today; // 변수 선언
today = Week.FRIDAY; // 열거 상수 중 저장 가능
열거 타입 이름과 소스파일 이름은 동일해야 함
열거 상수는 관례적으로 모두 대문자로 작성함
_
로 연결함열거타입 변수 = 열거타입.열거상수;
형태Week tomorrow;
Week today = Week.SUNDAY;
System.out.println(today == Week.SUNDAY) // true : 같은 객체를 참조하기 때문에
Week week1 = Week.SATURDAY;
Week week2 = Week.SATURDAY;
System.out.println(week1 == week2); // true
Calendar now = Calendar.getInstance();
- 제공하는 클래스 (연, 월, 일, 요일, 시간, 분, 초 이용가능)
import java.util.Calendar;
하기!
// 예제
import java.util.Calendar;
public class EnumWeekExample {
public static void main(String[] args) {
Week today = null; // 열거 타입 변수 선언
Calendar cal = Calendar.getInstance();
int week = cal.get(Calendar.DAY_OF_WEEK); // 일(1) ~ 토(7)의 숫자를 return
switch(week) {
case 1 :
today = Week.SUNDAY;
break;
case 2 :
today = Week.MONDAY;
break;
case 3 :
today = Week.TUESDAY;
break;
case 4 :
today = Week.WEDNESDAY;
break;
case 5 :
today = Week.THURSDAY;
break;
case 6 :
today = Week.FRIDAY;
break;
case 7 :
today = Week.SATURDAY;
}
System.out.println("오늘은 " + today + " 입니다.");
if(today == Week.SATURDAY) {
System.out.println("일요일에는 교회를 갑니다.");
}
else {
System.out.println("열심히 자바 공부 합니다.");
}
}
}