Step it up now

배열 ++ 문제 다시풀기 본문

개인공부/JAVA

배열 ++ 문제 다시풀기

케잉 2024. 4. 17. 21:18
arr.length   vs   arr[row].length

 

public class ArrayDi2 {

    public static void main(String[] args) {
        // 2x3 2차원 배열을 만든다
        int [ ] [ ] arr = {
                { 1, 2, 3},
                { 4, 5, 6}
        }; //행2, 열3



        for (int row=0; row < arr.length; row++ ){   //arr.length -> arr의 행의 개수
            for (int column =0; column < arr[row].length ; column ++){   // arr[row].length = 한 행의 개수
                System.out.print(arr[row][column] + " ");
            }
            System.out.println(); //한 행이 끝나면 라인을 변경한다
        }
    }
}

 

 

public class ArrayDi4 {
    public static void main(String[] args) {
        // 2x3 2차원 배열, 초기화
        int[ ][ ] arr = new int[4][4];// 입력한 로우, 컬럼 만큼의 배열 출력하기

        int i = 1;
        // 순서대로 1씩 증가하는 값을 입력한다
        for(int row = 0; row< arr.length; row++){
            for(int column = 0; column < arr[row].length; column++){
                arr[row][column] = i++;
            }
        }

        // 2차원 배열의 길이를 활용
        for (int row = 0; row < arr.length; row++) {
            for (int column = 0; column < arr[row].length; column++) {
                System.out.print(arr[row][column]  + " ");
            }
            System.out.println();
        }
    }
}

 

4*4 배열 출력

 

 

 


 

 

 

 

향상된 for문,  for each문 

 

public class EnhancedFor1 {

    public static void main(String[] args) {
        int[ ] numbers = {1, 2, 3, 4, 5};

        //일반 for문
        for (int i = 0; i < numbers.length; i++){
            int number = numbers[i];;
            System.out.println(number);
        }

        //향상된 for문, for-each문
        for (int number : numbers) {
            System.out.println(number);
        }
    }
}

 

//for-each문을 사용할 수 없는 경우 :  증가하는 index 값 필요할 때
for(int i =0; i < numbers.length; i++){
    System.out.println("number" + i + "번의 결과는 : " + numbers[i]);
}

 

 

 

사용자로부터 n개의 정수를 입력받아 배열에 저장한 후, 배열 내에서 가장 작은 수와 가장 큰 수를 찾아 출력하는 프로 그램을 작성하자

입력받을 숫자의 개수를 입력하세요:3
3개의 정수를 입력하세요:
1
2
5
가장 작은 정수: 1 가장 큰 정수: 5
public class ArrayEx6 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("입력 받을 숫자의 개수를 입력하세요: ");
        int n = scanner.nextInt();

        int [ ] numbers = new int[n];
        int minNumber, maxNumber;

        System.out.println( n + "개의 정수를 입력하세요: ");
        for (int i = 0; i < n ; i ++) {
            numbers[i] = scanner.nextInt();
        }

        // minNumber, maxNumber에 배열의 첫번째 항목을 넣어둠
       // minNumber = numbers[0];
        // maxNumber = numbers[0];
         minNumber = maxNumber = numbers[0];
         for (int i = 1 ; i < n ; i++) {  //i = 1, 배열이 두번째 항목
             if (numbers[i] < minNumber) { // 두번째 항목과 첫번째 항목 비교
                minNumber = numbers[i]; // 참이면 minNumber 갱신
            }
             if (numbers[i] > maxNumber) {
                 maxNumber = numbers[i];
             }
        }
        System.out.println("가장 작은 정수: " + minNumber);
        System.out.println("가장 큰 정수: " + maxNumber);
    }
}

 

 

 

 

 

 

사용자로부터 4명 학생의 국어, 수학, 영어 점수를 입력받아 각 학생의 총점과 평균을 계산하는 프로그램을 작성하자. 2차원 배열을 사용하고, 실행 결과 예시를 참고하자



학생수를 입력하세요:3
1번 학생의 성적을 입력하세요:
국어 점수:10
영어 점수:20
수학 점수:30
2번 학생의 성적을 입력하세요:
국어 점수:10
영어 점수:10
수학 점수:10
3번 학생의 성적을 입력하세요:
국어 점수:20
영어 점수:20
수학 점수:20
1번 학생의 총점: 60, 평균: 20.0
2번 학생의 총점: 30, 평균: 10.0
3번 학생의 총점: 60, 평균: 20.

 

public class ArrayEx7 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int [] [] scores = new int [4] [3];
        String[] subject = {"국어", "영어", "수학"};

        for (int i =0; i < 4; i++ ){ //4명의 성적을 받아야함
            System.out.println( (i+1) + "번 학생의 성적을 입력하세요");
            for( int j = 0; j < 3 ; j ++) { //3과목
                System.out.println(subject[j] + " 점수:");
                scores[i][j] = scanner.nextInt();
            }
        }

        for (int i = 0; i < 4; i++){
            int total = 0;
            for(int j = 0; j <3 ; j ++) {
                total += scores[i][j];  //i학생의 j 점수 3개씩
            }
            double average = total/3.0;
            System.out.println( (i+1) + "번 학생의 총점:  " + total + ", 평균: " + average);


        }
    }
}

 

 

 

 

이전 문제에서 학생수를 입력받도록 개선하자

 

public class ArrayEx7 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int [] [] scores = new int [4] [3];
        String[] subject = {"국어", "영어", "수학"};

        for (int i =0; i < 4; i++ ){ //4명의 성적을 받아야함
            System.out.println( (i+1) + "번 학생의 성적을 입력하세요");
            for( int j = 0; j < 3 ; j ++) { //3과목
                System.out.println(subject[j] + " 점수:");
                scores[i][j] = scanner.nextInt();
            }
        }

        for (int i = 0; i < 4; i++){
            int total = 0;
            for(int j = 0; j <3 ; j ++) {
                total += scores[i][j];  //i학생의 j 점수 3개씩
            }
            double average = total/3.0;
            System.out.println( (i+1) + "번 학생의 총점:  " + total + ", 평균: " + average);


        }
    }
}

 

 

 

1. 상품 등록 | 2. 상품 목록 | 3. 종료
메뉴를 선택하세요:1
상품 이름을 입력하세요:JAVA
상품 가격을 입력하세요:10000
1. 상품 등록 | 2. 상품 목록 | 3. 종료
메뉴를 선택하세요:1
상품 이름을 입력하세요:SPRING
상품 가격을 입력하세요:20000
1. 상품 등록 | 2. 상품 목록 | 3. 종료
메뉴를 선택하세요:2 JAVA: 10000원 SPRING: 20000원
1. 상품 등록 | 2. 상품 목록 | 3. 종료
메뉴를 선택하세요:3
프로그램을 종료합니다.

``` 상품을 더 등록할 수 없는 경우 ```
1. 상품 등록 | 2. 상품 목록 | 3. 종료
메뉴를 선택하세요:1
더 이상 상품을 등록할 수 없습니다.

``` 등록된 상품이 없는 경우 ```
1. 상품 등록 | 2. 상품 목록 | 3. 종료
메뉴를 선택하세요:2
등록된 상품이 없습니다
public class ProductAdminEx {

    public static void main(String[] args) {
        int maxProducts = 10;
        String[] productNames = new String[maxProducts];
        int [] productPrices = new int[maxProducts];
        int productCount = 0;

        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.print("1. 상품 등록 | 2. 상품 목록 | 3. 종료\n 메뉴를 선택하세요: ");
            int menu = scanner.nextInt(); // nextInt는 숫자만 가져감 -> \n가 남음
            scanner.nextLine();// \n 사용

            if (menu ==1){

                if(productCount >= maxProducts){
                    System.out.println("더 이상 상품을 등록할 수 없습니다");
                    continue; //  반복문의 나머지 부분 건너띄고 다음 반복 진행
                }

                System.out.print("상품 이름을 입력하세요: ");
                productNames [productCount] = scanner.nextLine(); //이름 입력하면 0번째 배열(producCount)부터 들어가야함

                System.out.print("상품 가격을 입력하세요: " );
                productPrices [productCount] = scanner.nextInt();

                productCount ++;

            } else if (menu == 2) {
                if (productCount == 0){
                    System.out.println("등록된 상품이 없습니다");
                    continue;
                }
                for (int i =0; i < productCount; i++){
                    System.out.println(productNames[i] + ": " + productPrices[i] + "원");
                }
            } else if (menu == 3) {
                System.out.println("프로그램을 종료합니다");
                break;
            } else {
                System.out.println("잘못된 메뉴를 선택하셨습니다");
            }
        }
    }
}

 

 

 

 

📢 scanner. nextInt()  주의사항 

while (true) {
    System.out.print("1. 상품 등록 | 2. 상품 목록 | 3. 종료\n 메뉴를 선택하세요: ");
    int menu = scanner.nextInt(); // nextInt는 숫자만 가져감 -> \n가 남음
    //scanner.nextLine();// \n 사용

    if (menu ==1){
        System.out.print("상품 이름을 입력하세요: ");
        productNames [productCount] = scanner.nextLine(); //이름 입력하면 0번째 배열(producCount)부터 들어가야함

        System.out.print("상품 가격을 입력하세요: " );
        productPrices [productCount] = scanner.nextInt();

 

 

이렇게 돼버린다

 

 

 

 

https://www.inflearn.com/course/lecture?courseSlug=%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%9E%90%EB%B0%94-%EC%9E%85%EB%AC%B8&unitId=194612&category=questionDetail

 

학습 페이지

 

www.inflearn.com

 

https://www.inflearn.com/course/lecture?courseSlug=%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%9E%90%EB%B0%94-%EC%9E%85%EB%AC%B8&unitId=194613

'개인공부 > JAVA' 카테고리의 다른 글

생성자  (0) 2024.06.03
기본형 vs 참조형 - 메서드 호출시  (0) 2024.05.16
scanner 스캐너  (0) 2024.04.05
반복문  (0) 2024.04.03
형 변환 casting  (0) 2024.04.01