공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

 

 

 


숫자로 이뤄진 문자열의 각 자리의 합 출력

 

숫자로된 문자열을 입력받아서  int 형으로 변환하는 프로그램이다.  char 형인 숫자를  int 형으로 형변환 할 때 아스키코드값을 몰라도  '0' 을 빼주면 숫자 아스키코드값이 나온다. 

 

실행결과

 

package test;
import java.util.Scanner;	//Scanner 클래스를 사용하기 위한 import 

class test{
	public static void main(String[] args) {
		
		String input;	//입력받은 문자열을 저장하기 위한 변수
		int result = 0;	//최종 결과값을 저장하기 위한 변수, 0으로 초기화한다.
		
		Scanner scanner = new Scanner(System.in);	//입력을 받기 위해서 Scanner 클래스의 객체인 scanner를 생성한다.
		System.out.print("문자열을 입력하세요(숫자만 가능) : ");
		input = scanner.nextLine();	//nextLine()으로 문자열을 입력받아 input에 저장한다.
		
		for(int i = 0 ; i < input.length() ; i++) {	//입력받은 문자열의 길이까지 반복문 실행
			result += (input.charAt(i) - '0');	//charAt()으로 문자열의 글자를 한글자씩 빼낸다음에 '0'을 뺴준값(숫자 아스키코드값)을 result에 더한다.
			
		}
		
		System.out.println(input + "의 각자리의 합 : " + result); //결과값 출력
	}
}

 

 

 


int타입의 변수 num의 각 자리수합 출력

 

이번에는 입력값을  int 타입으로 받은뒤에 자리의 합을 구하는 문제이다. 문자열일 경우에는 글자를 하나씩 뽑아주는  charAt( ) 이 있었지만 숫자의 경우에는  10 으로 나눠가면서 자리수를 없애 나가야 한다. 프로그램은 아래의 방법을 코드로 구현한 것이다.

 

실행결과

ex) 5491인 경우

1. 10으로 나눈 나머지를 합에 더한다.
5491 % 10 = 1 (result의 누적값 : 1)

2. 1의 결과를 원래의 값에서 뺀다.
5491 - (5491 % 10)
5491 - 1 = 5490

3. 10으로 나눠준다.(자리수 줄이기)
5490 / 10 = 549

1 ~ 3의 과정을 0이 될 때까지 반복한다. 

 

package test;
import java.util.Scanner;	//Scanner 클래스를 사용하기 위한 import 

class test{
	public static void main(String[] args) {
		
		int input;	//입력받은 문자열을 저장하기 위한 변수
		int result = 0;	//최종 결과값을 저장하기 위한 변수, 0으로 초기화한다.
		int tmp;
		
		Scanner scanner = new Scanner(System.in);	//입력을 받기 위해서 Scanner 클래스의 객체인 scanner를 생성한다.
		System.out.print("문자열을 입력하세요(숫자만 가능) : ");
		input = scanner.nextInt();	//nextInt()로 정수를 입력받아 input에 저장한다.
		
		tmp = input;	//input값을 나중에 출력해야하므로 tmp에 값을 옮겨서 계산한다.
		
		while(tmp != 0) {
			
			result += (tmp % 10);	//총합을 저장하는 result에 나머지값을 더한다.
			tmp -= (tmp % 10);	//나머지값을 빼준다.
			tmp /= 10;	//10으로 나눠준다.
				
		}
		
		System.out.println(input + "의 각자리의 합 : " + result); //결과값 출력
		
	}
}

+ Recent posts