DevTagebuch

for 문 사용하여 입력된 문자열 거꾸로 출력하기 본문

Java/Do it

for 문 사용하여 입력된 문자열 거꾸로 출력하기

yedevlife 2020. 4. 18. 02:52
public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		
		int i;
		System.out.print("Input Words");
		String str=s.nextLine();
		
		for(i=str.length()-1;i>=0;i--) {
			System.out.printf("%c",str.charAt(i));
		}
			
	}

입력된 문자열을 받기 위해 String 타입 변수 선언 필요.

출력은 맨 뒤에서 부터 하는 것이기 때문에 for문의 시작점은 입력한 문자의 맨 마지막 글자.

.length() 는 입력된 문자열의 길이를 구하는 메소드. 

.charAt(i) 는 입력된 문자열에서 i번째에 있는 문자를 구하는 메소드.

 

자바에서 문자열이 입력되면 1번째부터 세어지는게 아니라 0번째 부터 시작함.

예를 들면, 12345를 입력했을때 세 번째 문자는 3이 아닌 4가 되는 것. 왜냐면 0번째 문자가 1이 되기 때문에!

그래서 str.length()에 -1을 해주는 것. 

즉, 내가 원하는 n번째의 문자를 구하고 싶다면 -1을 해줘야 내가 생각한 그 값이 나옴. 

 

만약 for(i=str.length();i>-0;i--) 문을 런 해본다면 순서는 이렇게 된다.

1. 입력한 문자열의 크기가 i에 저장됨. (abcde를 입력했다면 i에는 5가 저장됨)

2. i>=0 비교. 5가 0보다 크니까 통과 밑에 실행문으로 이동.

3. str.charAt(5) 5번째 문자(%c)를 입력. 

근데 자바에서는 항상 우리가 생각하는 1번째 문자를 0번째 문자로 받아들이기 때문에 5글자를 입력했다면 최대 입력된 n번째는 4번째가 됨. 

a b c d e 글자수 5

0 1 2 3 4 번째 글자

4. 5번째 문자는 없는 셈이니 Error.

 

For(i=str.length()-1;i>-0;i--)문을 실행해보면

1. 문자열의 크기 5에서 1을 뺀 4가 i에 저장.

2. i>=0비교. 4가 0보다 크다. 참=>실행

3. str.charAt(i) 는 str입력된 문자열에서 4번째 글자. 즉 abcde 에서 e를 입력하게 됨.

4. 포문 처음으로 돌아감.

5. 이때는 i-- 증감식 실행. i--란 i의 값을 1씩 줄여나가는 것.

6. 그렇게해서 i의 값은 3이 되었고 3>=0 참이기 때문에 계속 실행하다가 

7. 0 값에서 i--실행시 -1이 되므로 i>=0이라는 조건식에 반하게 되어 출력 중지.

Comments