문제:
알파벳 소문자와 대문자로만 이루어진 길이가 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()은 한 줄 단위로 입력받기 때문에 개행문자도 한 줄로 인식한다.
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문이 불만족하기때문에 왼쪽은 그냥 출력되지만 오른쪽은 조건을 만족하기 때문에 다음줄로 넘어가서 출력된다.