<최대공약수 구하기>
public class MainFunction_1 {
public static int function(int a, int b, int c) {
int min;
if(a > b) {
if(b > c) {min = c;}
else {min=b;}
}else {
if(a > c) {min = c;}
else {min = a;}
}
for(int i=min; i>0; i--) {
if(a%i == 0 && b%i == 0 && c%i == 0) {return i;}
}
return -1;
}
public static void main(String[] args) {
System.out.println("400 300 750의 최대 공약수는? " + function(400, 300, 750));
}
}
public static int function(int a, int b, int c) {
-public static
-int 반환형이 정수로 되어 있어서 return값이 정수이다.
-function 함수명
-(int a, int b, int c) 매개변수
메인에서 function(400, 300, 750)으로 불렀다.
매개변수와 메인에서 부르는 개수가 같아야 하고, 타입이 같아야 한다.
int min;
if(a > b) {
if(b > c) {min = c;}
else {min=b;}
}else {
if(a > c) {min = c;}
else {min = a;}
}
셋 중에서 가장 작은수를 찾는다. (=min)
for(int i=min; i>0; i--) {
if(a%i == 0 && b%i == 0 && c%i == 0) {return i;}
} return -1;
-min이 0이 될 때까지 for문을 돌린다.
-세 개의 숫자들이 나머지가 모두 0이 될 수 있는 최대공약수(i)를 찾는다.
-그 값(i)을 리턴한다.
-값이 없다면 -1을 리턴한다.
리턴값이 -1인 이유는 위의 계산에서 답이 -1이 나올 수 없기 때문에 실패의 의미로 넣은 수이다. 처음 public static int로 반환형을 정수로 잡아서 숫자만 입력할 수 있음
<약수의 n번째 값>
public class MainFunction_2 {
//반환형, 함수명 (매개변수)
public static int function77(int number, int k) {
for(int i=1; i<=number; i++) {
if(number%i == 0) {
k--;
if(k == 0) { return i; }
}
}
return -1;
}
public static void main(String[] args) {
int result = function77(3050, 10);
if(result == -1) {
System.out.println("3050의 10번째 약수는 없습니다.");
}else {
System.out.println("3050의 10번째 약수는 "+result+"입니다.");
}
}
}
int result = function77(3050, 10);
3050의 약수를 구하고, 10번째 약수를 출력하라는 문장
function77 함수에서 return -1이 for문 바깥에 있는 이유는 반복문이 끝나고 -1을 반환해야하기 때문이다.
<글자 출력>
public class MainFunction_3 {
public static char function88(String input) {
return input.charAt(input.length()-1);//숫자가 0부터 시작하니까 -1
}
public static void main(String[] args) {
System.out.println("Hellow World의 마지막 글자는? "+ function88("Hellow Word"));
}
}
반환형을 char한 이유는 한 가지 문자만 출력하기 위해서이다.
charAt()
이 필요한 이유는 사용자가 문자를 입력할 때 한 글자씩 입력하는 경우는 극히 드물다. 문자열을 입력 받는 경우가 대다수인데 그 중에서 한 글자만 char타입으로 변환해준다. 그렇다면 Scanner로 입력 받으면서도 char 타입을 사용할 수 있다. 때문에 charAt()을 사용하기 위해서는 입력 받은 String 타입 문자열이 필요하다. 그리고 char값을 받을 char타입의 변수가 필요하다. 문자열의 순서는 0부터 시작한다.
<가장 큰 값 불러오기>
public class MainFunction_4 {
public static int max(int a, int b) {
return(a > b) ? a : b;
}
public static int function99(int a, int b, int c) {
int result = max(a, b);
result = max(result, c);
return result;
}
public static void main(String[] args) {
System.out.println("345, 567, 789 중에서 가장 큰 값은?"
+ function99(345, 567, 789));
}
}
최대한 함수를 여러개로 쪼갠 이유가 자바의 특성을 보여주는 것이다. 여러번 불러서 사용할 수 있도록 자잘하게 나눈 것이다.
public static int max(int a, int b) {
return(a > b) ? a : b;
}
일단 두 개만 갖고 와서 큰 숫자를 반환을 한다. 삼항 연산자로 (괄호) 값이 맞으면 a로 가고, 틀리면 b로 간다. 345과 567 두 수를 비교해서 더 큰 수를 출력한다.
public static int function99(int a, int b, int c) {
int result = max(a, b);
result = max(result, c);
return result;
}
public static int function99(int a, int b, int c) {
int result = max(a, b);
max를 부른다. 여기서 작업을 한다. 조건에 따라서 result 값이 달라짐
result = max(result, c);
두번째 작업을 한다.
return result;
마지막은 가장 큰 값이 들어간다.
}
'개발일지 > Java + Spring' 카테고리의 다른 글
[Java] 팩토리얼 + 피보나치 수열로 재귀함수 배우기 (0) | 2021.09.22 |
---|---|
JVM이란? JVM의 구성요소 (0) | 2021.09.20 |
[Java] File 함수로 파일 탐색 + try-catch 예외처리 (0) | 2021.09.17 |
[java] 배열의 설명과 예제 (0) | 2021.09.17 |
[java] float, double 계산 후 소수점까지 출력 (0) | 2021.09.17 |