728x90
반응형
<목차>
1) 배열
1-1) 예제 풀이
2) foreach 문
2-1) 예제 풀이
3) 메서드
3-1) 구조 및 유형
3-2) 예제 풀이
4) 로또 생성기
1) 배열
1-1) 예제 풀이
패키지 chapter06.array
Array_Example02.class
package chapter06.array;
import java.util.Scanner;
public class Array_Example02 {
public static void main(String[] args) {
/*
문제
원소 개수를 입력받아 배열을 생성하고 각 원소의 값을 입력받아 저장한 후,
전체 원소의 합계를 구하여 출력한다.
조건
배열 원소 개수는 2 이상의 정수로 입력받는다.
2 미만의 값이 입력되면 오류 메시지를 출력하고 다시 입력받는다.
출력 결과
배열의 크기 : 5
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
1 + 2 + 3 + 4 + 5 = 15
*/
/*
// 내 version
Scanner scan = new Scanner(System.in);
System.out.print("배열의 크기 : ");
int arrSize = scan.nextInt();
while (arrSize < 2) {
System.out.println("배열의 크기를 2 이상으로 다시 입력해주세요!");
System.out.print("배열의 크기 : ");
arrSize = scan.nextInt();
}
int num; // 입력값
int resultArr[] = new int[arrSize]; // 입력값으로 구성된 배열
int sum = 0; // 입력값들의 합
for (int i = 0; i < arrSize; i++) {
System.out.print("arr[" + i + "] = ");
num = scan.nextInt();
resultArr[i] = num;
if (i == (arrSize - 1)) {
for (int j = 0; j < resultArr.length; j++) {
if (j < resultArr.length - 1) {
System.out.print(resultArr[j] + " + ");
sum += resultArr[j];
} else {
sum += resultArr[j];
System.out.print(resultArr[j] + " = " + sum);
}
}
}
}
*/
// 교수님 version
Scanner scan = new Scanner(System.in);
int size;
do {
System.out.print("배열의 크기: ");
size = scan.nextInt();
if (size < 2) {
System.out.println("2 이상 입력해라");
} else {
int[] arr = new int[size];
int sum = 0;
for (int i = 0; i < arr.length; i++) {
System.out.print("arr[" + i + "] = ");
arr[i] = scan.nextInt();
sum += arr[i];
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
if (i < arr.length -1) {
System.out.print(" + ");
} else {
System.out.println(" = " + sum);
}
}
}
} while(size < 2);
}
}
Array_Example03.class
package chapter06.array;
public class Array_Example03 {
public static void main(String[] args) {
/*
임의의 배열 array를 역순으로 출력하시오.
출력 결과 :
원래 배열 -> 브레드 윌크 초코 소세지 치즈
역순 배열 -> 치즈 소세지 초코 윌크 브레드
*/
String[] array = {"브레드", "윌크", "초코", "소세지", "치즈"};
System.out.print("원래 배열 -> ");
for (String element : array) {
System.out.print(element + " ");
}
System.out.print("\n역순 배열 -> ");
for (int i = (array.length - 1); i >= 0; i--) {
System.out.print(array[i] + " ");
}
}
}
2) foreach 문
2-1) 예제 풀이
패키지 chapter06.array
EnhancedForLoop1.class
package chapter06.array;
public class EnhancedForLoop1 {
public static void main(String[] args) {
// 강화 for 문 / foreach 문
int[] score = {88, 94, 72, 75, 23};
int sum = 0;
// i : 요소를 저장할 제어변수, score : 반복대상
for (int i : score) {
sum += i;
}
System.out.println("총점: " + sum);
System.out.println("평균: " + (float) sum / score.length);
// foreach 읽기 전용 반복문
int[] score2 = {88, 94, 72, 75, 23};
for (int s : score2) { // int s의 첫번째 사이클은 마치 int s = 88;과 같다고 보면 된다!(즉, 새로 정의된 변수에 기존 배열의 요소값을 새로 할당해준다고 보면 된다!)
s++;
}
System.out.println("score[0] = " + score[0]);
}
}
EnhancedForLoop2.class
package chapter06.array;
public class EnhancedForLoop2 {
public static void main(String[] args) {
int[][] score = {
{77, 56, 70, 88},
{55, 33, 89, 91},
{87, 24, 11, 53}
};
for (int[] student : score) {
for (int subject : student) {
System.out.print(subject + ", ");
}
System.out.println();
}
}
}
3) 메서드
3-1) 구조 및 유형
/*
1. 구조
(접근 제어자) (반환할 값의 자료형) 메서드 명 (매개변수 자료형 매개변수 명...) {
명령어...
return 반환할 값;
}
*/
// ex)
public int add (int num1, int num2) {
int result;
result = num1 + num2;
return result;
}
// 메서드 유형
// 1) 파라미터X, 반환값X
public void 메서드 () {
System.out.println("메서드 호출");
}
// 2) 파라미터X, 반환값O
public int 메서드 () {
System.out.println("값 리턴");
return 100;
}
// 3) 파라미터O, 반환값X
public void 메서드 (int num1, int num2) {
System.out.println("합: " + (num1 + num2));
}
// 4) 파라미터O, 반환값O
public int 메서드 (int num1, int num2) {
int sum = num1 + num2;
return sum;
}
3-2) 예제 풀이
패키지 chapter07.method
MethodTest1.class
package chapter07.method;
public class MethodTest1 {
public static void main(String[] args) {
// method
System.out.println("1~10 = " + calcSum(1, 10)); // calcSum 메서드 호출 부분
System.out.println("15~100 = " + calcSum(15, 100)); // calcSum 메서드 호출 부분
} // main
// calcSum 메서드 정의하는 부분
public static int calcSum(int from, int to) {
int sum = 0;
for (int i = from; i <= to; i++) {
sum += i;
}
return sum;
}
} // class
MethodTest2.class
package chapter07.method;
public class MethodTest2 {
public static void main(String[] args) { // args의 default 값 : null
// 호출부
method1();
String s = method2(); // String s = "hello java";와 동일한 코드이다!
System.out.println(s);
int[] arr = {1, 2, 3, 4, 5};
method3(arr);
int sum = method4(10, 100);
System.out.println(sum);
System.out.println(method4(10, 100));
} // main
// 메서드 정의부
// 1. 파라미터x, 반환값x
public static void method1() {
System.out.println("파라미터도 없고 반환값도 없는 메서드");
return; // 생략 가능
}
// 2. 파라미터x, 반환값o
public static String method2() {
System.out.println("파라미터가 없고 문자열을 반환하는 메서드");
return "hello java";
}
// 3. 파라미터o, 반환값x
public static void method3(int[] arrForm) {
for (int i : arrForm) {
System.out.print(i + " ");
}
}
// 4. 파라미터o, 반환값o
public static int method4(int a, int b) {
int sum = a + b;
return sum;
}
} // class
MethodTest3.class
package chapter07.method;
public class MethodTest3 {
public static void main(String[] args) {
int year = 2024;
int month = 2;
int days = getMonthDays(year, month);
System.out.println(year + "년 " + month + "월은 " + days + "일까지 있습니다.");
} // main
public static int getMonthDays(int year, int month) {
int[] arDays = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 29;
}
return 28;
} else {
return arDays[month];
}
}
}
MethodTest4.class
package chapter07.method;
public class MethodTest4 {
public static void main(String[] args) {
// value check
int num = 2;
getDouble(num);
System.out.println("num= " + num);
int[] arr = {2, 8, 6};
getDouble(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println("arr[" + i + "]= " + arr[i]);
}
}
public static int getDouble(int value) {
value *= 2;
return value;
}
public static void getDouble(int[] value) {
value[0] *= 2;
}
}
4) 로또 생성기
* Math 클래스의 random 메서드 : 값을 출력할 시 매번 해당 범위 내의 숫자 중 random으로 값을 뽑아줌!!
패키지 chapter06.array
Random_Example.class
package chapter06.array;
import java.util.Random;
public class Random_Example {
public static void main(String[] args) {
// 난수를 발생하는 두가지 방법
// Math 클래스의 random 메서드를 호출
double num = Math.random(); // random 메서드는 "0.0xxxx ~ 0.9xxxx"를 결과로 반환함
int num2 = (int) (Math.random()*10 + 1);
System.out.println(num);
System.out.println(num2);
// Random 클래스의 객체를 생성하여 난수 발생
Random r = new Random();
int num3 = r.nextInt(100);
System.out.println(num3);
}
}
(1) 첫 번째 시도 출력 결과
(2) 두 번째 시도 출력 결과
Array_Example04.class
package chapter06.array;
import java.util.Random;
import java.util.Scanner;
public class Array_Example04 {
public static void main(String[] args) {
/*
로또 생성기
로또는 1 ~ 45의 숫자가 총 6개가 1게임이다.
중복된 숫자 발생 시 중복을 제거하고,
작은 숫자부터 큰 숫자 순으로 정렬한다.
로또 게임을 몇 개 구매할 것인지 입력을 받아
해당 개수만큼의 6개의 번호가 있는 로또를 출력한다.
*/
/*
// 내 version
Scanner scan = new Scanner(System.in);
System.out.print("구매하실 로또의 개수를 입력하세요 : ");
int purchaseNum = scan.nextInt();
System.out.println("==================================");
Random r = new Random();
int num;
int[] arr = new int[6];
int temp;
for (int i = 1; i <= purchaseNum; i++) {
System.out.print("*[ " + i + "]번째: ");
for (int j = 0; j < 6; j++) {
num = r.nextInt(100) + 1;
while (num > 45) {
num = r.nextInt(100) + 1;
}
arr[j] = num;
// 로또 번호 중복 체크 코드에 대한 이상여부 체크용
//for (int s = 0; s < arr.length; s++) {
// arr[s] = 1;
//}
if (arr.length == 6) {
for (int k = 0; k < arr.length; k++) {
for (int h = 0; h < arr.length; h++) {
if (k == h) {
continue;
} else {
while (arr[k] == arr[h]) {
num = r.nextInt(100) + 1;
while (num > 45) {
num = r.nextInt(100) + 1;
}
arr[h] = num;
}
}
}
}
}
}
for (int p = 0; p < arr.length; p++) {
for (int w = p+1; w < arr.length; w++) {
if (arr[p] > arr[w]) {
temp = arr[w];
arr[w] = arr[p];
arr[p] = temp;
}
}
}
for (int q = 0; q < arr.length; q++) {
System.out.print(arr[q] + " ");
}
System.out.println();
}
*/
// 교수님 version
Scanner scan = new Scanner(System.in); //입력받기 위한 Scanner 객체 생성
System.out.print("구매하실 로또의 개수를 입력하세요: ");
int num = scan.nextInt(); //입력받은 숫자를 저장
int cnt = 1; //코드 실행의 카운트값
System.out.println("================================");
while(cnt <= num) { //1부터 받고 싶은 행운번호의 개수만큼을 반복
int lotto[] = new int[6]; //로또므로 번호 6개짜리 배열 생성
//난수 6개 배열에 저장
for (int i = 0; i < lotto.length; i++) {
lotto[i] = (int)(Math.random()*45 + 1); //Math.random()을 통해 1~45 사이의 난수 생성
//중복제거
for (int j = 0; j < i; j++) {
if(lotto[i] == lotto[j]) {
i--; //이전과 중복된 값이 있다면 해당 배열의 방에 다시 새로운 숫자를 생성하도록 반복횟수--
break;
}
}
}
//정렬
for (int i = 0; i < lotto.length; i++) {
for (int j = i+1; j < lotto.length; j++) {
if(lotto[i] > lotto[j]) { //옆 방에 값과 비교해서 큰수를 오른쪽으로 이동
int temp = lotto[j];
lotto[j] = lotto[i];
lotto[i] = temp;
}
}
}
// Arrays.sort(lotto);
//배열의 각 요소를 출력
// System.out.print(" *["+cnt+"]번째: ");
System.out.printf(" *[%3d]번째: ", cnt);
for (int k : lotto) {
// System.out.print(k + " ");
System.out.printf("%2d ", k);
}
System.out.println();
cnt++; //카운트값을 증가
}
}
}
'Java' 카테고리의 다른 글
Java(10) - 접근 제어자, Encapsulation, 배열 복사 (0) | 2024.04.23 |
---|---|
Java(9) - 메소드 오버로딩, 클래스와 인스턴스, 생성자, static (0) | 2024.04.22 |
Java(7) - 배열(Array), 다차원 배열 (0) | 2024.04.18 |
Java(6) - 반복문(for 문) 예제 풀이 (0) | 2024.04.17 |
Java(5) - 반복문(while 문, do-while 문, for 문) (0) | 2024.04.16 |