format("%", 변수)
format은 문자열 사이사이에 %로 형식값을 지정해 변수를 삽입해 출력하기 좋다.
예를들어,
아래와 같은 변수 3개를 큰따옴표 ""로 묶인 깔끔한 한줄로 출력할 수 있다는 소리다.
String name = "Alice";
int age = 30;
double height = 1.65;
System.out.printf("이름: %s, 나이: %d, 키: %.2f m\n", name, age, height);
위처럼 format % 다양한 형식값을 지원하고, 그의 속성은 아래와 같다.
%s: 문자열(string) 형식
%d: 10진(decimal) 정수 형식
%f: 부동 소수점(floating-point)형식
%b: boolean 값 형식
%c: 문자(char) 형식
%h: 해시 코드(hash code) 형식
%n: 새 줄(new line) 문자형식
%%: % 문자 자체를 출력할 때 형식
간단한 html과 위의 이론을 이용해 환율계산기를 만들어보자.
// class에 변수선언
private static final float USD_RATE = 0.6f;
private static final float JPY_RATE = 0.6f;
private static final float CNY_RATE = 0.6f;
private static final float GBP_RATE = 0.6f;
private static final float EUR_RATE = 0.6f;
//doget에 변수선언, won(금액 input name)과 operator(환율선택 select name)
String command = request.getParameter("command");
String won = request.getParameter("won");
String operator = request.getParameter("operator");
//HTML 구현
request.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter pw = response.getWriter();
pw.print("<html><title>환율 계산기</title>");
pw.print("<font size=5>환율 계산기</font><br>");
pw.print("<form name='frmCalc' method='get' action='/pro06/calc' />");
pw.print("원화: <input type='text' name='won' size=10 />");
pw.print("<select name='operator' >");
pw.print("<option value='dollar'>달러</option>");
pw.print("<option value='en'>엔화</option>");
pw.print("<option value='wian'>위안</option>");
pw.print("<option value='pound'>파운드</option>");
pw.print("<option value='euro'>유로</option>");
pw.print("</select>");
pw.print("<input type='hidden' name='command' value='calculate' />");
pw.print("<input type='submit' value='변환' />");
pw.print("</form>");
pw.print("</html>");
pw.close();
// 결과 출력할 폼 지정
if(command != null && command.equals("calculate")) {
String result = null//초기화
//예외처리
//try는 예외를 감지, catch는 예외 처리
try{
//Float.parseFloat String을 float로 변환
result = calculate(Float.parseFloat(won), operator);
}catch(Exception e1){
system.out.print("값안넣었음")
}
pw.print("<html><font size=10>변환결과</font><br>");
pw.print("<html><font size=10>" + result + "</font><br>");
pw.print("<a href='/pro06/calc'>환율 계산기</a>");
return;
}
// 환율계산하는 함수
private static String calculate(float won, String operator) {
String result =null; //초기화
//equals()
//equals 메소드는 비교하고자 하는 대상의 내용 자체를 비교하지만,
//== 연산자는 비교하고자 하는 대상의 주소값을 비교합니다.
if(operator.equals("dollar")) {
result = String.format("%f", won / USD_RATE); //문자열 형식 %f (실수형 형식)
}else if(operator.equals("en")) {
result = String.format("%f", won / JPY_RATE);
}else if(operator.equals("wian")) {
result = String.format("%f", won / CNY_RATE);
}else if(operator.equals("pound")) {
result = String.format("%f", won / GBP_RATE);
}else if(operator.equals("euro")) {
result = String.format("%f", won / EUR_RATE);
}
return result;
}
'JAVA' 카테고리의 다른 글
JAVA 연산규칙 (0) | 2023.03.17 |
---|---|
Java EE란? (0) | 2023.03.17 |
계약서, interface (0) | 2023.03.16 |
상속받다, extends와 implements의 차이 (0) | 2023.03.16 |
상속받다, implements (0) | 2023.03.16 |