📌반복문(while)을 활용한 달력
public static void main(String[] args) {
System.out.println("============ 2023년 12월 ============");
int i = -5;
while (++i <= 31) {
if (i <= 0) {
System.out.printf("%5s", " ");
} else {
System.out.printf("%5d", i);
if (i % 7 == 2)
System.out.println();
}
}
}
📌정수 5개 입력 / 배열 내 최댓값(max), 최솟값(min) 구하는 문제
- 하나씩 비교하면서 max, min에는 항상 작은 값이 담기도록 하고, 전체 요소들이 한번씩 비교되게 한다
public static void main(String[] args) {
int[] su = new int[5];
System.out.println("정수 5개를 입력하세요?");
Scanner sc = new Scanner(System.in);
su[0] = sc.nextInt();
int max = su[0], min = su[0];
for (int i = 1; i < su.length; i++) {
su[i] = sc.nextInt();
if (max < su[i])
max = su[i];
if (min > su[i])
min = su[i];
}
System.out.println("max = " + max);
System.out.println("min = " + min);
sc.close();
}
📌이름을 입력받고 배열의 몇 번째 인덱스에 있는지 출력하는 문제
- 인덱스를 변수로 설정, for문의 변수와 하나씩 비교하면서 입력한 이름과 일치하면 인덱스 번호 출력
- if문을 써서 인덱스 번호와 일치하는 경우에는 몇 번 인덱스인지 출력하고
인덱스 번호를 벗어나는 수는 문제 조건대로 배열방에서 찾지 못했다는 메시지 출력
- 입력한 이름과 같은 이름을 배열에서 찾았을 때, 반복문을 벗어나도록 break 명령을 입력하는 게 핵심!!
public static void main(String[] args) {
String[] names = new String[] {"홍길동", "전우치", "홍길동", "세종대왕", "김길동" };
Scanner sc = new Scanner(System.in);
int index = -1;
System.out.println("검색할 이름을 입력하세요?");
System.out.print("이름:");
String inputname = sc.next();
for (int i = 0; i<names.length; i++) {
if (inputname.equals(names[i])) {
index = i;
break;
}
}
if (index != -1) {
System.out.println(inputname + "는(은) 배열의 인덱스 "+index+"에서 찾았습니다.");
} else
System.out.println(inputname + "는(은) 배열방에서 찾지 못했습니다.");
sc.close();
}
📌향상된(확장) for문을 활용한 2차원 배열 출력
- for문을 중첩해서 2차원 배열 arr이 갖고 있는 elements(요소)를 출력할 수 있다
- 이 로직을 이해하려면, 2차원 배열이 어떻게 형성되는지 알아야 한다
- 먼저, 행의 수만큼 행에 대한 1차원 배열을 만들고,
각 행에 다시 1차원 배열 형태로 열 개수 만큼 배열을 만든다.
public static void main(String[] args) {
int arr[][] = {
{10, 20},
{30, 40},
{50}
};
for (int[] a : arr) {
for (int n : a) {
System.out.print(n + " ");
}
System.out.println();
}
System.out.println("끝.");
}
public static void main(String[] args) {
String arr[][] = { {"과일", "사과"},
{"아이스크림", "메로나"},
{"커피"}};
for (String n : arr[0]) {
System.out.println(n);
}
System.out.println("==========배열된 순서대로 출력하기==========");
for (String[] a : arr) {
for (String b : a) {
System.out.print(b + " ");
}
System.out.println();
}
}
📌cmd 명령프롬프트를 활용한 값 입력
- java main메서드가담긴클래스이름 값1 값2 ...
- public static void main(String[] args) 메인 메서드를 이렇게 정의하면
args[0], args[1] ... 이런 형태로 직접 입력한 값에 접근할 수 있다
- 커맨드 라인에 매개변수를 입력하지 않으면 크기가 0인 배열이 생성된다
args.length = 0
📌사용자값 입력/출력
- 직접 값을 입력하고자 하는 클래스에서 Run As -> Run Configurations -> Arguments 경로로 이동하면
직접 값을 입력할 수 있다
- 향상된 for문을 이용하면 직접 입력한 값(메인 메서드의 매개변수 args에 저장된 값)을 출력할 수 있다
for (String a : args) {
System.out.println(a);
}
📌오름차순으로 정리(배열)
public static void main(String[] args) {
int a[] = { 5, 4, 3, 2, 1 };
for (int i = 0; i < a.length - 1; i++) {
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
int imsi = a[i];
a[i] = a[j];
a[j] = imsi;
}
}
}
System.out.println("정렬 후 데이터 : ");
for (int data : a) {
System.out.print(data + "\t");
}
}