package oop0914;
public class Test07_quiz {
public static void main(String[] args) {
// 연습문제
//문1)주민번호의 각 숫자의 합을 구하시오 (Character클래스와 charAt()함수 활용)
// 8+9+1+2+3+0+1+2+3+4+5+6+7
String jumin = "8912301234567";
int sum = 0;
for(int i=0; i<jumin.length(); i++) {
char ch = jumin.charAt(i); //'8'
sum = sum + ch;
}//for end
System.out.println(sum);
위 코드의 경우 출력해보면 우리가 원하는 값인 51이 나오지 않고 675가 나온다.
그 이유는 ch가 숫자가 아닌 '숫자' 인 문자형이기 때문에 아스키 코드값으로 나오기 때문이다.
따라서 문자 '8'을 숫자 8로(char를 int로) 변환하는 작업이 추가로 필요하다.
package oop0914;
public class Test07_quiz {
public static void main(String[] args) {
// 연습문제
//문1)주민번호의 각 숫자의 합을 구하시오 (Character클래스와 charAt()함수 활용)
// 8+9+1+2+3+0+1+2+3+4+5+6+7
String jumin = "8912301234567";
//내 풀이
int hap = 0;
for (int i=0; i<jumin.length(); i++) {
hap = hap + jumin.charAt(i)-'0';
}
System.out.println(hap);
/////////////////////////
//다른 풀이
int sum = 0;
for(int i=0; i<jumin.length(); i++) {
char ch = jumin.charAt(i); //'8'
//'8' -> 8
sum = sum + Character.getNumericValue(ch);
}//for end
System.out.println(sum);
//문2)대소문자를 서로 바꿔서 출력하시오 (Character클래스와 charAt()함수 활용)
// gONE wITH tHE wIND
String str="Gone With The Wind";
//내 풀이
char[] c = new char[str.length()];
String a = "";
for (int i=0; i<str.length(); i++) {
c[i] = str.charAt(i);
if (c[i]>='A' && c[i]<='Z') {
c[i] = (char) (c[i] + 32);
} else if (c[i]>='a' && c[i]<='z') {
c[i] = (char) (c[i] - 32);
}//if end
a += c[i];
}//for end
System.out.println(a);
///////////////////////////////////
//다른 풀이
for(int i=0; i<str.length(); i++) {
char ch = str.charAt(i);
if(Character.isUpperCase(ch)) {
System.out.print(Character.toLowerCase(ch));
} else if (Character.isLowerCase(ch)) {
System.out.print(Character.toUpperCase(ch));
} else {
System.out.print(ch);
}//if end
}//for end
}//main() end
}//class end
'웹개발 교육 > Java' 카테고리의 다른 글
[35일] Java (37) - 다형성 (0) | 2022.09.15 |
---|---|
[35일] Java (36) - super (0) | 2022.09.15 |
[34일] Java (34) - 주민 번호 유효성 검사 (0) | 2022.09.14 |
[34일] Java (33) - Object 클래스 (0) | 2022.09.14 |
[34일] Java (32) - override (0) | 2022.09.14 |
package oop0914;
public class Test07_quiz {
public static void main(String[] args) {
// 연습문제
//문1)주민번호의 각 숫자의 합을 구하시오 (Character클래스와 charAt()함수 활용)
// 8+9+1+2+3+0+1+2+3+4+5+6+7
String jumin = "8912301234567";
int sum = 0;
for(int i=0; i<jumin.length(); i++) {
char ch = jumin.charAt(i); //'8'
sum = sum + ch;
}//for end
System.out.println(sum);
위 코드의 경우 출력해보면 우리가 원하는 값인 51이 나오지 않고 675가 나온다.
그 이유는 ch가 숫자가 아닌 '숫자' 인 문자형이기 때문에 아스키 코드값으로 나오기 때문이다.
따라서 문자 '8'을 숫자 8로(char를 int로) 변환하는 작업이 추가로 필요하다.
package oop0914;
public class Test07_quiz {
public static void main(String[] args) {
// 연습문제
//문1)주민번호의 각 숫자의 합을 구하시오 (Character클래스와 charAt()함수 활용)
// 8+9+1+2+3+0+1+2+3+4+5+6+7
String jumin = "8912301234567";
//내 풀이
int hap = 0;
for (int i=0; i<jumin.length(); i++) {
hap = hap + jumin.charAt(i)-'0';
}
System.out.println(hap);
/////////////////////////
//다른 풀이
int sum = 0;
for(int i=0; i<jumin.length(); i++) {
char ch = jumin.charAt(i); //'8'
//'8' -> 8
sum = sum + Character.getNumericValue(ch);
}//for end
System.out.println(sum);
//문2)대소문자를 서로 바꿔서 출력하시오 (Character클래스와 charAt()함수 활용)
// gONE wITH tHE wIND
String str="Gone With The Wind";
//내 풀이
char[] c = new char[str.length()];
String a = "";
for (int i=0; i<str.length(); i++) {
c[i] = str.charAt(i);
if (c[i]>='A' && c[i]<='Z') {
c[i] = (char) (c[i] + 32);
} else if (c[i]>='a' && c[i]<='z') {
c[i] = (char) (c[i] - 32);
}//if end
a += c[i];
}//for end
System.out.println(a);
///////////////////////////////////
//다른 풀이
for(int i=0; i<str.length(); i++) {
char ch = str.charAt(i);
if(Character.isUpperCase(ch)) {
System.out.print(Character.toLowerCase(ch));
} else if (Character.isLowerCase(ch)) {
System.out.print(Character.toUpperCase(ch));
} else {
System.out.print(ch);
}//if end
}//for end
}//main() end
}//class end
'웹개발 교육 > Java' 카테고리의 다른 글
[35일] Java (37) - 다형성 (0) | 2022.09.15 |
---|---|
[35일] Java (36) - super (0) | 2022.09.15 |
[34일] Java (34) - 주민 번호 유효성 검사 (0) | 2022.09.14 |
[34일] Java (33) - Object 클래스 (0) | 2022.09.14 |
[34일] Java (32) - override (0) | 2022.09.14 |