728x90
반응형
오늘은 지난시간에 배운 배열을 응용하였다
<예제 1>
package ch09_array;
import java.util.Scanner;
public class Ex05_ArrayEx {
public static void main(String[] args) {
/**
* 거스름돈 계산 하기
* 필요한 거스름돈을 입력 했을 떄 동전별로 몇 개가 필요한지 계산
* 예)
* 170원 이라고 입력하면
* 100원 1개
* 50원 1개
* 10원 2개
*
* 780 이라고 입력하면
* 500 1개
* 100 2개
* 50 1개
* 10원 3개
*
*
*/
int[] coin = {500,100,50,10};
Scanner scanner = new Scanner(System.in);
int won = scanner.nextInt();
int count = 0;
int i = 0;
for ( i = 0; i< coin.length; i++){
count = won / coin[i];
System.out.println(coin[i] + "원 동전:" + count + "개");
won = won % coin[i];
}
}
}
거스름돈 계산
개인적으로 가장 일상 생활과 밀접한 예제가 아닐까 생각이 들었다
예제의 주석에서 처럼 거스름돈을 받을떄 동전을 몇개나 받는지가 문제이다
우선 크기가 4인 배열을 만들어주고 그안에 동전의 종류를 넣어주었다
그리고 won이라는 변수에 스케너로 수를 입력받을수 있게 만들어 준뒤
for문을 사용하여 배열을 정리해주고 각각 인덱스를 원과 나눠주고 그 값을 count 라는 변수에 지정을 해주고
for문이 반복 될때 won과 배열의 나머지값을 다시 won에 넣어주게 된다
<예제 2 >
package ch09_array;
import java.util.Scanner;
public class Ex06_ArrayEx {
public static void main(String[] args) {
/**
* 크기가 5인 정수형 배열울 선언하고
* 스캐너로 배열에 값을 저장한 뒤
* 입력된 값 중에서 가장 큰 값을 출력
*/
Scanner scanner = new Scanner(System.in);
int[] numbers1 = new int[5];
int j =0;
int i = 0;
int max =0;
for (i=0; i< numbers1.length; i++){
numbers1[i] = scanner.nextInt();
j=numbers1[i];
if (numbers1[i]>max){
max=numbers1[i];
}
}
System.out.println("최댓값은"+max+"입니다");
}
}
스케너로 배열안에 수를 입력하고 그중 최댓값을 도출 해내는 코드입니다
우선 for문으로 배열을 정렬 해주고 스케너로 배열 안에 수를 지정해 줍니다
그리고 그 값을 j 에 넣어주고 if문에서 인덱스 값이 max 보다 클경우 max 안에 인덱스 값을 넣어주고
출력을 하게 되면 최댓값이 나타나게 됩니다
<예제3>
package ch09_array;
public class Ex07_ArrayEx {
public static void main(String[] args) {
/**
* int num ={3,2,1,5,4};
* 위와 같은 배열이 있을 떄
* 12345 와 같이 오름차순으로 정렬하기
*/
int i = 0;
int[] num = {3, 2, 1, 5, 4};
int temp = 0;
for ( i = 0; i < num.length; i++){
for(int j = i; j< num.length; j++){
if (num[i]>num[j]){
temp = num[i];
num[i]=num[j];
num[j]=temp;
}
}
System.out.println(num[i]);
}
}
}
위와 같은 코드는 배열을 차순으로 정리해주는 코드이다
for문을 중복으로 사용 하여 두 배열을 비교하여 정리 하는 방식이다
<예제 4>
위와 같은 프로그렘을 만드는 예제이다
package ch09_array;
import java.util.Scanner;
public class Ex08_ArrayEx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
int[] student = null;
int j = 0;
int temp = 0;
int score = 0;
int num = 0;
for (int i = 0; i <= 5; i++) {
System.out.println("1.학생수 입력 | 2.점수입력 | 3.점수목록 | 4.분석 |5.종료");
System.out.print("선택>");
num = scanner.nextInt();
if (num == 1) {
System.out.print("학생수>");
j = scanner.nextInt();
if (j>=0) {
student = new int[j];
}else {
student = null;
}
}else if(num == 2){
for (int k = 0; k < student.length; k++){
System.out.print((k+1)+"번학생 점수:" );
score = scanner.nextInt();
student[k] = score;
}
}if (num == 3) {
for (int k = 0; k<student.length; k++){
System.out.println((k+1)+"번 학생 점수"+student[k]);
}
} else if (num == 4) {
for (int f = 0; f<student.length; f++){
sum+=student[f];
for (int g = f+1; g<student.length; g++){
if (student[f]<student[g]){
temp = student[f];
student[f]=student[g];
student[g]=temp;
}
}
}double avg = sum/student.length;
System.out.println("반 최고 점수"+student[0]);
System.out.println("반 평균 점수" + avg);
for (int o = 0; o<student.length; o++){
System.out.println((o+1) + "등" + student[o]);
}
} else if (num == 5) {
System.out.println("종료합니다");
break;
}
}
}
}
지난시간에 만들었던 은행 atm기 화면과 동일한 작동 방식이다
사실 while문을 사용해서 만들어야 했는데 어쩌다 보니 for 문으로 완성하게 되었는데
나름 재밋는 경험이였고 나 자신과의 싸움을 이겨낸 기분이였다
728x90
반응형
'개발일지' 카테고리의 다른 글
개발 일지 13일차 - 메서드- (0) | 2023.12.12 |
---|---|
개발일지 12일차 -객체 지향 프로그래밍- (1) | 2023.12.11 |
개발 일지 10일차 -타입 , 배열 - (0) | 2023.12.07 |
개발 일지 9일차 -While문 , Random 메서드- (2) | 2023.12.06 |
개발일지 8일차 -for문의 응용- (2) | 2023.12.05 |