[2021-06-28]Java

4649 단어 JavaJava

8일차 (복습)



프로젝트 1

평균값 계산기


파라미터로 정수 배열을 받고 배열의 모든 값의 평균(double)을 리턴해주는 메소드를 작성해보자

시작 전 큰 틀 짜기

##메소드의 파라미터가 정수 배열 형태이니 int array[]꼴로 파라미터를 작성하면 될 것이다.

##리턴값 자료형이 double이므로 메소드의 큰 틀은

double function(int array[]){

}

의 꼴로 작성하면 될 것이다.

메소드 작성


계산 클래스 작성

public class AverageFinder {
    double computeAverage(int[] intArray) {
        //변수 선언
        int i=0;
        double sum=0;
        double everage;
        int arrayLength=intArray.length;
        
        //while문 시작
        while(i<arrayLength){
            sum=sum+intArray[i];
            i++;
        }
        //리턴값 설정
        everage=sum/arrayLength;
        return everage;
    }
}

메소드 부분은 이렇게 작성해보았다
먼저, while문 안에서 돌아갈 변수들을 초기화해주고
나중에 리턴값에 쓰일 everage와 arrayLength 변수들도 선언해주었다.


메인 메소드 작성


public class Main {
    public static void main(String[] args) {
        AverageFinder finder = new AverageFinder();

        // 테스트 1
        int[] testArray1 = {3, 7, 3};
        System.out.println(finder.computeAverage(testArray1));

        // 테스트 2
        int[] testArray2 = {1, 3, 4, 7};
        System.out.println(finder.computeAverage(testArray2));

        // 테스트 3
        int[] testArray3 = {4};
        System.out.println(finder.computeAverage(testArray3));

        // 테스트 4
        int[] testArray4 = {1, 2, 3, 4, 5};
        System.out.println(finder.computeAverage(testArray4));
    }
}

이렇게 메인 메소드를 구성해보았다.

테스트 결과











프로젝트 2

두 원소의 차중 최댓값 구하기


정수 배열을 파라미터로 받고 두 원소의 차 중 최댓값을 리턴해주는 메소드를 작성해보자

시작 전 큰 틀 짜기

## 두 원소의 차를 절댓값으로 나타내주는 Math.abs()를 활용하여 비교한다.
## 반복문 2개를 중첩으로 활용하여 두 원소를 빼주고 최대값을 다른 변수에 저장한다
## 끝까지 반복을 완료하면 최종 남아있는 최대값을 리턴시킨다

메소드 작성


계산 클래스작성

public class MaxFinder {
    


    int MaxDifference(int[] intArray) {
        // 코드를 입력하세요.
        int i=0;
        
        int max=0;
        
        if(intArray.length<2){
            return 0;
        }
        
        while(i<intArray.length-1){
            int k=0;
            
            while(i+k<intArray.length-1){
                if(Math.abs(intArray[i]-intArray[i+k+1])>max){
                    max=Math.abs(intArray[i]-intArray[i+k+1]);
                    
                }else{
                    max=max+0;
                    
                }
                k++;
            }
            i++;
            
    }
    return max;
}   
}

원소의 개수가 1개인 배열은 0을 리턴시키게 만들었다
반복문을 중첩으로 사용하여 마치 배열을 하나하나 훑듯이 두 원소의 차이를 max값과 비교해주었다.
초기 max값을 0으로 설정해두었고 그 후로 더 큰 max값이 나오면 그 값을 max값에 넣어주는 형식이다.

메인 메소드 작성

public class Main {
    public static void main(String[] args) {
        MaxFinder finder = new MaxFinder();

        // 테스트 1
        int[] testArray1 = {-2, 7, 3};
        System.out.println(finder.MaxDifference(testArray1));

        // 테스트 2
        int[] testArray2 = {8, 3, 14, 1};
        System.out.println(finder.MaxDifference(testArray2));

        // 테스트 3
        int[] testArray3 = {4, 2, 3, 1};
        System.out.println(finder.MaxDifference(testArray3));

        // 테스트 4
        int[] testArray4 = {};
        System.out.println(finder.MaxDifference(testArray4));

        // 테스트 5
        int[] testArray5 = {1, 2, -3, 4, 5};
        System.out.println(finder.MaxDifference(testArray5));

        // 테스트 6
        int[] testArray6 = {1};
        System.out.println(finder.MaxDifference(testArray6));
    }
}

테스트 결과

9
13
3
0
8
0

뒤늦게 깨달은 사실이지만 두 원소의 차이를 처음부터 비교하기 보다는
최댓값과 최솟값을 구한 후 마지막에 리턴값으로 (최댓값-최솟값)을 해주는 것이 더 좋은 코드인것같다

좋은 웹페이지 즐겨찾기