Java/모두의 자바

Chapter 10-62 최댓값과 최솟값

계란💕 2022. 2. 13. 16:31

  Ex) getMinMaxString 메서드는 String형 변수 str을 매개변수로 입력받는다. str에는 공백으로 구분한 숫자들이 저장되어 있다. str에 나타나는 숫자 중 최솟값과 최댓값을 찾아 이를 "최솟값 최댓값" 형태의 String을 반환하는 메서드를 완성하라. 예를 들어 str이 "1 2 3 4"라면 "1 4"를 반환하고 "-1 -2 -3 -4"라면 "-4 -1"을 반환한다. 

<hide/>
package javaStudy;
public class GetMinMaxString {
	public String getMinMaxString(String str) {
		String [] strArr = str.split(" ");
		int maxValue  = Integer.parseInt(strArr[0]);
		int minValue  = Integer.parseInt(strArr[0]);	
		
		for(int i = 1; i < strArr.length; ++i) {
			int value = Integer.parseInt(strArr[i]);
			if(maxValue < value)
				maxValue = value;
			if(minValue > value)
				minValue = value;
		}
		return minValue  + " " + maxValue;
	}
    
	public static void main(String[] args) {
		String str = "1 2 3 4";
		String str2 = "-4 -3 -2 -1";
		GetMinMaxString minMax = new GetMinMaxString();
		System.out.println("최댓값과 최솟값은? " + minMax.getMinMaxString(str));
		System.out.println("최댓값과 최솟값은? " + minMax.getMinMaxString(str2));
	}
}

  Note) 실행 결과

  - parseInt() : 문자열을 정수로 바꾼다.

  - 내용이 숫자라도 ""(큰 따옴표)안에 들어있으면 숫자가 아니라 문자열로 취급한다. 

  - 문제는 공백으로 각 값들을 구분하고 비교해서 최댓값과 최솟값을 찾아낸 뒤 최댓값, 최솟값을 문자열로 반환하는 것이다. 

  - " " 공백 문자열을 구분자로 이용하면 된다. 

  - split() 메서드는 구분자로 잘라낸 문자열들을 배열로 반환한다. 

  - 값을 비교하기 위해서는 비교할 대상이 있어야 하는데 첫 번째 값은 비교 대상이 없으므로 최댓값이면서 최솟값이기도 하다. 

 

  - 최댓값, 최솟값을 담을 변수를 선언하고 배열의 첫 번째 요소를 각각 담는다. 

  - 문자열을 값이 숫자라도 연산이 되지 않기 때문에 비교를 정확히 하기 위해 문자열을 정수로 바꿔야 한다. 

    -> Wrapper Class

  - Integer.parseInt() 메서드를 이용해 숫자로 된 문자열을 정수형으로 바꾼다. 

  - 최댓값, 최솟값 변수에 있는 값과 배열의 두 번째 요소부터 비교한다. 

  - 비교해서 최댓값보다 크다면 최댓값 변수의 값을 바꾸고 최솟값 변수보다 작으면 최솟값 변수를 바꾼다. 

  - 배열의 모든 요소를 비교하면 변수에 알맞은 값이 담긴다. 

  - +연산자는 숫자 뿐만 아니라 문자열에서도 사용한다.