JAVA Day-11

이강민·2021년 10월 4일
0

JAVA 기초 1

목록 보기
12/20
post-thumbnail

각종 기능을 사용하는 이유

  1. 변수를 사용하는 이유 : 반복되는 값을 쉽게 관리하기 위해서
  2. 입출력 함수를 사용하는 이유: 개발자가 한 작업에 대해 확인하기 위해서
  3. 조건문을 사용하는 이유: 결과가 2가지 이상일 경우 선택하기 위해
  4. 반복문을 사용하는 이유 : 반복되는 것들을 쉽게 사용하기 위해
  5. 배열을 사용하는 이유 : 반복되는 같은 타입의 변수들을 쉽게 관리하기 위해서
  6. 메소드를 사용하는 이유: 반복되는 기능들을 쉽게 관리하기 위해서 , 코드를 줄이기 위해서

charAt()과 정수에서 한글로 바꾸기

charAt()이란?

charAt을 설명하기 전 String을 잠시 보자, String이란 무엇인가?
문자'열'.. 그렇다. 문자가 배열처럼 나열되어 있는 형태를 문자열 즉, String이라고 하는 것이다. 우리는 배열을 배우면서 값의 배열 순서를 입력해 코드가 주소값을 찾아 값을 출력해준다는 사실을 알고 있다.
'문자열도 배열이라면 배열처럼 선택할수 있지않을까?'
이것을 가능하게 해주는 키워드가 바로 charAt()이라는 놈이다.
다시말해 charAt이란 문자열을 배열처럼 사용하게 해주는 것을 말한다.

charAt() 사용방법

문자열로 정의되어 있는 변수에 charAt을 붙여 원하는 값을 괄호안에 넣어 사용하는데 이때 괄호안에는 배열의 순서가 들어가야한다.

String hellow = "안녕하세요.";
hellow.charAt(0); //"안"
hellow.charAt(1); //"녕"
hellow.charAt(2); //"하"
hellow.charAt(3); //"세"
hellow.charAt(4); //"요"
hellow.charAt(5); //"."

이 값을 콘솔창에서 보고 싶으면 print하면 된다.

정수에서 한글로 바꾸는 프로그램

이제 charAt을 배웠으니 이 키워드를 사용하여 정수를 한글로 바꾸는 프로그램을 만들어보자. 우리는 입력을 "1023"이라고 하면 출력을 "일공이삼"이라고 출력하는 프로그램을 만들고 싶다고 가정해보자

  1. 먼저 숫자를 한글로 만드는 메소드를 만들고 그 메소드에 한글로 바꾸는 문장을 입력 할 것이다. 메소드명은 numberToHangle이라 정의하고 리턴 값 없이 바로 출력되는 메소드로 만들어 보자
    매개변수는 추후 다시 작성하자
public class MethodTask {
	void numberToHangle(){
    }
	public static void main(String[] args) {
	
    }
}
  1. 메소드의 내용에 들어갈 문장을 작성해보자
    만약 입력을 받아 출력을 할때 charAt을 사용한다면 문자열이 존재해야 하고 이 문자열에는 숫자에 상호하는 문자가 입력되어야겠구나.
String hangle = "공일이삼사오육칠팔구"; 
  1. charAt으로 출력하면 누적해서 출력해야되니 누적되어 받을 저장공간도 만들어 주자
String toHangle = "";
String hangle = "공일이삼사오육칠팔구";
  1. 1을 10으로 나눈 나머지는 1 2를 10으로 나눈 나머지는 2 이것을 활용하면 charAt에 들어갈 숫자가 나올 수 있다.
    하지만 for문으로 반복시키고 싶지만 숫자타입으로 받으면 이 숫자의 길이는 표현이 되지 않아 오류가 난다. 따라서 문자타입의 숫자를 받고 이 숫자를 정수형으로 변환시켜서 사용하면 되겠다.
void numberToHangle(String data) {
	String toHangle = "";
	String hangle = "공일이삼사오육칠팔구";
	int num = Integer.parseInt(data);
	
	for (int i = 0; i < data.length(); i++) {
		toHangle += hangle.charAt(num%10);
	}
}
  1. 위와 같이 작성하면 한자리 수의 변환은 잘 나오지만 그 이상부터는 나오지 않는다. 어떻게 해결 할 수 있을까?
    만약 12라를 숫자가 있다면 12를 10으로 나눈 나머지는 2이고 이것을 변환되어 이, 2번 반복해서 이이가 나오는 오류가 생긴다....
    12를 10으로 나누면 값은 1 나머지는 2이다. 나머지가 charAt을 만나 2는 한글 이가 된다. 그리고 값 1을 다시 나누면 나머지는 1 charAt을 만나 1은 일이된다.
    이것을 이용하기위해 10을 나눈 나머지에 이어서 나눈 값을 누적해주면 되겠다.
for (int i = 0; i < data.length(); i++) {
	toHangle += hangle.charAt(num%10);
	num/=10;
	}
  1. 위와 같이 하면 누적은 순서대로 축척되기에 거꾸로 출력한다.
    ex) 12는 이일, 934는 사삼구.
    그러면 결과가 나와있으니 그 결과를 charAt을 이용해 for문으로 거꾸로 돌리면 되겠다. 또한 그 결과를 담을 저장공간도 필요하겠다.
...생략....
for (int i = toHangle.length()-1; i >= 0; i--) {
	result +=  toHangle.charAt(i);
	}
System.out.println(result);
  1. 위와 같이 감소반복에 -1로 시작하고 0과 같다로 반복해야 결과값에 반대로 result에 담을 수 있다.
    그리고 이 메서드를 사용하기 위해서 메인 메서드에 클래스를 초기화하고 클래스 변수명의 메서드를 이용하면 된다. 아래는 지금까지의 작성된 코드와 앞서 말한 코드를 추가한 것이다.
package day11;

public class Hangle {
	void numberToHangle(String data) {
		String toHangle = "";
		String hangle = "공일이삼사오육칠팔구";
		String result ="";
		int num = Integer.parseInt(data);
		
		for (int i = 0; i < data.length(); i++) {
			toHangle += hangle.charAt(num%10);
			num/=10;
		}
		for (int i = toHangle.length()-1; i >= 0; i--) {
			result +=  toHangle.charAt(i);
		}
		//System.out.println(toHangle);
		System.out.println(result);
	}
	
	public static void main(String[] args) {
		Hangle han = new Hangle();
		han.numberToHangle("81");
	}
}
profile
AllTimeDevelop

0개의 댓글

관련 채용 정보