공부했던 자료 정리하는 용도입니다.
재배포, 수정하지 마세요.
숫자로 이뤄진 문자열의 각 자리의 합 출력
숫자로된 문자열을 입력받아서 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으로 나눈 나머지를 합에 더한다. |
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); //결과값 출력
}
}
'Back end > Java 문제' 카테고리의 다른 글
[Java] 문자열이 숫자인지 판별 (isDigit()) (0) | 2019.06.14 |
---|---|
[Java] 구구단 (0) | 2019.06.13 |
[Java] Math.random()을 활용한 로또번호 뽑기 (0) | 2019.06.07 |
[Java] 1부터 n까지의 정수 중에서 2 or 3의 배수가 아닌 수의 총합 구하기 (0) | 2019.05.29 |
[Java] 대문자를 소문자로, 소문자를 대문자로 변환 ( toUpperCase( ), toLowerCase( )) (0) | 2019.05.24 |