정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.
단순히 몫 구하기 연산자를 사용했을 땐 쉬웠다.
제한사항인 0<num1<=100, 0<num2<=100을 적용하면서 에러가 발생했다.
에러난 코드
class Solution {
public int solution(int num1, int num2) {
int answer = num1%num2;
if(0<num1 && num1<=100 && 0<num2 && num2<=100) {
return answer;
}
}
}
에러난 이유 :
Java의 데이터 타입에 대한 규칙때문.
solution의 데이터형태는 int
데이터 형태를 int로 지정하면 반드시 숫자를 return해야함.
if문의 true조건에 해당하지 않는 매개변수일 때,
예를들어 num1=500일 때, return 할 수가 없음.
해결 방법 :
else문을 작성해서 if문의 결과가 false일 때도 return할 수 있게 했다.
해결된 코드
class Solution {
public int solution(int num1, int num2) {
int answer = num1%num2;
if(0<num1 && num1<=100 && 0<num2 && num2<=100) {
return answer;
} else {
return -1;
}
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/120810?language=java
메인 메서드라는 것과 데이터 타입을 배웠다.
main()메서드란?
Java로 구현된 프로그램이 시작될 때 가장 먼저 실행되는 메서드.
Java의 규칙, Java소스는 무조건 main 함수에서부터 시작된다.
Java 에서 메서드는 리턴값이 어떤 형태(타입)인지 반드시 표시해야만 한다.
표시하지 않으면 에러가 발생한다. 내가 이 에러를 만난 것이다.
리턴값이 어떤 형태인지는 데이터 타입으로 표시할 수 있다.
리턴값이 없을 때 데이터 타입으로 void를 사용한다.
데이터 타입의 종류는?
기본 자료형 : byte, short, int, long, char, float, double, boolean
참조 자료형 : string, Array, List, HashMap, HashSet, LinkedList, Queue, Stack
아직은 무엇을 의미하는지 전부 다 알지는 못하지만, 앞으로 배워나갈 것!
1.기본 자료형
기본값 존재, 따라서 NULL개념이 없다.
기본형 타입에 NULL을 넣고 싶다면, 래퍼 클래스 활용하기.
실제 값을 저장하는 공간, Stack메모리에 저장된다.
| 타입 | 메모리 크기 | 기본값 | 데이터의 표현 범위 |
|---|---|---|---|
| 논리형 | boolean | 1 byte | false |
| 정수형 | byte | 1 byte | 0 |
| short | 2 byte | 0 | |
| int (default) | 4 byte | 0 | |
| long | 8 byte | 0L | |
| 실수형 | float | 4 byte | 0.0f |
| double (default) | 8 byte | 0.0d | |
| 문자형 | char | 2 byte | ‘\u0000’ |
2.참조 자료형
기본형 타입을 제외한 모든 타입. NULL개념이 존재.
실제 값을 가지지 않음. 데이터가 저장된 메모리의 주소값을 가지는 자료형.
힙(Heap) 메모리에 저장된다.
해당 값은 객체를 참조하는 변수 타입을 의미. 다양한 자료형이 있음.
검색해서 사용하기!
3.래퍼 클래스
기본 자료형을 객체(Object)로 다루고 싶을 때 사용.
비 객체를 객체화 시키는 클래스.
기본타입의 객체화를 의미.
기본 자료형을 클래스로 감싸는 것.