웹개발 교육/Java

[35일] Java (35) - 연습 문제

ewok 2022. 9. 15. 10:10
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