본문 바로가기

카테고리 없음

백준문제 11721) 열 개씩 끊어 출력하기 java




문제: 

알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다.

한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.


코드:

import java.util.Scanner;


public class q_1001 {


public static void main(String[] args) {

Scanner s = new Scanner(System.in);

System.out.println("문자를 입력하시오.");

String message =s.next();// 키보드문자 입력

s.close();


for (int i = 0; i < message.length(); i++) {

if (i % 10 == 0 && i != 0) {

System.out.println();

}

System.out.print(message.charAt(i));

}


}

}




먼저 알아야 할 개념

next()와 nextLine()의 차이점

- next()는 개행문자, 공백은 무시하고 문자를 입력받는다.

- nextLine()은 한 줄 단위로 입력받기 때문에 개행문자도 한 줄로 인식한다.



charAt (문장중에 인덱스 위치에 해당되는 문자 추출하기)

subString ( 원하는 범위만큼 문자열 잘라내기 )




첫번째 실패

문자 배열과 입력받은 문자배열을 다른 줄에 정의했더니 더 이상 출력되지 않았다.




코드설명

Scanner s = new Scanner(System.in);

System.out.println("문자를 입력하시오.");

String message =s.next();// 키보드문자 입력

s.close();

-스캐너 문으로 문자를 입력받고 스캐너문을 닫아준다.  입력값이 숫자이면 s.nextInt()지만 문자이므로 s.next()혹은 s.nextLine() 둘 다 가능하다. 



for (int i = 0; i < message.length(); i++) {

if (i % 10 == 0 && i != 0) {

System.out.println();

}

System.out.print(message.charAt(i));


-message배열은 입력받은 N개까지 있다. (링크연결)에서 말했듯이 배열은 0부터 시작하므로 N-1까지 증가하는것으로 생각하면 된다.

-만약 배열번호i의 값이 10으로 나누었을때 나머지가 0이고(&&) i값이 0이 아니면 한 줄 띄운다.

-i가 1씩 증가하지만 나눴을때 나머지가 0이 아니면 message배열의 문자를 출력한다.

-if문이 불만족하기때문에 왼쪽은 그냥 출력되지만 오른쪽은 조건을 만족하기 때문에 다음줄로 넘어가서 출력된다.