메서드 예제를 통해 익숙해져보자!
public class MethodTask {
int num(int nums) {
return nums+1;
}
public static void main(String[] args) {
MethodTask m = new MethodTask();
System.out.println(m.num(3));
}
}
4번 => 입력 예)1024 -> 출력 예) 일공이사
3문제를 같이 작성하였다.(메서드를 3번 사용해보기 위해서)
public class MethodTask_04 {
void getSumFrom1(int end) {
int result = 0;
if (end > 1) {
for (int i = 1; i < end + 1; i++) {
result += i;
}
System.out.println(result);
} else {
System.out.println("1이상의 값을 입력해주세요");
}
}
void div(int num1, int num2) {
double result = 0.0;
if (num2 != 0) {
result = Double.parseDouble(String.format("%.3f", (double) num1 / num2));
System.out.println(result);
} else {
System.out.println("0으로 나눌 수 없습니다.");
}
}
3번! 너무 어려웠다..정말 졍먈...
void chanegeToHangle(String data) {
String hangle ="공일이삼사오육칠팔구";
String result = "";
int num = Integer.parseInt(data);
for(int i =0; i<data.length(); i++) {
result += hangle.charAt(num % 10);
num /= 10;
}
for(int i = data.length()-1; i>-1; i--) {
System.out.print(result.charAt(i));
}
}
public static void main(String[] args) {
MethodTask_04 m = new MethodTask_04();
//한번에 출력!
m.getSumFrom1(1);
m.getSumFrom1(10);
m.div(10, 0);
m.div(10, 3);
m.div(10, 5);
m.chanegeToHangle("1024");
}
}
아래에 사용이유와 목적에 대해서 풀이를 해보겠음.
인덱스를 사용하기 위해서 배열로 접근을 하자.
String data : 내가 받은 숫자가 몇자리 수인지 알기 위해서 String으로 사용
String hangle ="공일이삼사오육칠팔구";
=> 왜 배열로 안할까?
문자열은 문자+배열이다.
- 문자열 내부적으로 대괄호가 있기때문에 charAt메서드를 통해서 접근한다.
int num = Integer.parseInt(data);
자리수를 알게 되면 그 자리에 뭐가 들어있는지 알 수 있게 된다.
자리수를 알기위해서는 나머지, 나누기의 연산이 필요하다.
String type으로는 연산을 못하기 때문에 정수 형변환을 해준다.
(아직 data는 String 정수는 num)
for(int i =0; i<data.length(); i++)
배열은 생성됐을때 length 라는 상수가 자동으로 만들어지고 거기에 길이가 들어간다.
하지만 클래스에서 length를 구현하려면 String클래스안에있는 lenght라는 메서드를 사용해야한다.
( 메서드는 이름뒤에 소괄호임으로! => lenght()으로 바꿔줘야한다. )
여기서 알 수 있는 점!
배열과 클래스의 차이점
배열 => 내가 만들자마자 생성됨. 클래스 => 메서드로 index에 접근
hangle.charAt(0); => 0이라는 문자값을 의미힌다.
result += hangle.charAt(num % 10); //charAt(index) num /= 10;
'num % 10'을 하게 되면 일의 자리수를 구할 수 있다.
10으로 나눈 나머지 필요하다.
왜냐하면 내가 찾던 한글이라는 배열에 인덱스 번호이기에.
String hangle은 클래스로 구현을 해놨기에 charAt 메서드 사용해야한다.
역순으로 출력.
for(int i = data.length()-1; i>-1; i--) {
System.out.print(result.charAt(i));
}