메서드(2) : 실습
부트캠프(END)/Java2022. 5. 17. 17:42
메서드는 클래스에 종속되어 클래스 안에서만 사용된다. 완전 객체지향 ⇢ 자바, C#
함수는 독립적으로 사용이 가능하다. ⇢ C언어, 코틀린, 파이썬 등
각 기능을 잘게 쪼개서 구현하고 끌어와서 사용하면 전체적인 코드를 간결하게 만들 수 있고 수정도 용이하다!
지역변수
말 그대로 특정 '지역'에서만 사용이 가능한 변수로,
블록({})이 끝나면 자동으로 사라진다.(=메모리에서 삭제)
메서드 만들기 실습
1. 임의의 정수가 저장된 배열을 정렬하는 문제
package methods;
import java.util.Arrays;
public class MethodEx3 {
// 정렬하는 메서드
// Call By Value,Call By Reference => 매개변수 전송법
static int[] sort(int[] arr, int type) {
// select sort(선택 정렬)
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (type == 0) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
} else {
if (arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
return arr;
}
static void process() {
// 사용자가 5개 정수를 보내주면 => 메서드에서 정렬데이터를 전송
// 출력
int[] arr = new int[5];
// 초기화
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)(Math.random() * 100) + 1; //1~100
}
System.out.println("정렬 전:");
System.out.println(Arrays.toString(arr));
System.out.println("정렬 후:");
int[] res = sort(arr, 0); //0 올림차순
System.out.println(Arrays.toString(res));
res = sort(arr, 1); //1 내림차순
System.out.println(Arrays.toString(res));
// ASC => DESC
}
public static void main(String[] args) {
// TODO Auto-generated method stub
process();
}
}
2. 로그인 처리
package methods;
//로그인 처리를 한 번 구현해 보자.
import java.util.*;
public class MethodEx5 {
static String isLogin(String id, String pwd) {
final String MYID = "admin";
final String MYPWD = "1234";
String result = "";
if (MYID.equalsIgnoreCase(id)) {
//대소문 구분없이 아이디를 비교한다.
if (MYPWD.equalsIgnoreCase(pwd))
result = "로그인되었습니다.";
else
result = "비밀번호가 틀립니다.";
} else {
result = "아이디가 존재하지 않습니다.";
}
return result;
}
static void process() {
Scanner scan = new Scanner(System.in);
System.out.print("아이디 입력:");
String id = scan.next();
System.out.print("비밀번호 입력:");
String pwd = scan.next();
String res = isLogin(id, pwd);
System.out.println(res);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
process();
}
}
3. 아이디 중복 체크하기
package methods;
import java.util.Scanner;
public class No1 {
static String input() {
Scanner scan = new Scanner(System.in);
System.out.print("ID입력:");
String id = scan.next();
return id;
}
static boolean idCheck(String id) {
String[] IDs = {
"KIMDOODOO",
"kim",
"kang",
"lee",
"park"
};
boolean bCheck = false;
for (String i: IDs) {
if (i.equalsIgnoreCase(id)) {
bCheck = true;
break;
}
/* 여기서 else문을 사용해 bCheck값을 변경할 경우,
* 예를 들어 lee라는 아이디를 사용했다고 했을때- 원래는 false여야 하지만...
* true, true, true, false, true로 마지막 결과가 true로 출력된다.
* 따라서 if문에 break를 사용하고 else문은 사용하지 않는다.
*/
}
return bCheck;
}
static void process() {
String id = input();
boolean bCheck = idCheck(id);
if (bCheck)
System.out.println("중복입니다. 다른 아이디를 사용하세요.");
else
System.out.println(id + "는 사용가능합니다.");
}
public static void main(String[] args) {
process();
}
}
4. 윤년 확인하기
package methods;
import java.util.Scanner;
public class MethodEx6 {
static boolean isYear(int year) {
boolean bCheck = false;
if ((year % 4 == 0 & year % 100 != 0) || (year % 400 == 0))
bCheck = true;
return bCheck;
}
static void process() {
Scanner scan = new Scanner(System.in);
System.out.print("년도 입력:");
int year = scan.nextInt();
boolean bCheck = isYear(year);
if (bCheck == true)
System.out.println(year + "년은 윤년입니다.");
else
System.out.println(year + "년은 윤년이 아닙니다.");
}
public static void main(String[] args) {
process();
}
}
5. 이진법 전환
package methods;
import java.util.Arrays;
import java.util.Scanner;
public class No4 {
static int input() {
Scanner scan = new Scanner(System.in);
System.out.print("2진법으로 변환할 수 입력:");
int x = scan.nextInt();
return x;
}
static int inputAuto() {
int x = (int)(Math.random() * 1000) + 1;
return x;
}
static int[] binarify(int input) {
int[] binary = new int[32];
int index = binary.length - 1;
while (true) {
binary[index] = input % 2;
input /= 2;
if (input == 0)
break;
index--;
}
return binary;
}
static void print(int[] binary) {
for (int i = 0; i < binary.length; i++) {
if (i % 4 == 0)
System.out.print(" ");
System.out.print(binary[i]);
}
System.out.print(" (2)");
System.out.println();
}
static void process(int type) {
if (type == 0) {
int b = input();
int[] binary = binarify(b);
System.out.println(b + "를 이진법으로 바꾸면");
print(binary);
} else if (type == 1) {
int b = inputAuto();
int[] binary = binarify(b);
System.out.println(b + "를 이진법으로 바꾸면");
print(binary);
}
}
public static void main(String[] args) {
process(1);
process(0);
}
}
'부트캠프(END) > Java' 카테고리의 다른 글
메서드(3) : 실습 (0) | 2022.05.18 |
---|---|
메서드(1) : 기본개념 (0) | 2022.05.16 |
문자열(String) 다루기, String 배열 응용 (0) | 2022.05.13 |
댓글()