백준 11718번
입력 받은 대로 출력하는 프로그램을 작성하시오.
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
◎첫번째방식
import java.util.ArrayList;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
System.out.println(sc.nextLine());
}
}
출력값은 다음과 같다.
hasNext() 현재 위치에서 다음에 데이터가 있으면 true 없으면 false
계속적으로 값을 적어주면 true 반환하게 되어 계속 실행된다.
◎두번째방식
isEmpty()를 사용해 한줄 전체가 비었을때 ArrayList에 저장되었던 모든 값들을 불러온다.
즉, 엔터를 연속으로 두번 눌러야지 값이 출력된다.
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
ArrayList<String> words = new ArrayList<>();
int cnt = 0; //횟수 100이상 제한 두기위해 사용
char a;
int clear = 0; //숫자, 알파벳 소문자,대문자가 아닌 다른 값이 들어갈때 ArrayList에 저장된 words를 초기화 하기 위해서
while(sc.hasNextLine()) {
String sentence = sc.nextLine();
if(sentence.startsWith(" ")||sentence.endsWith(" ")||sentence.length()>100) {
System.out.println("다시 입력");
}
else if(cnt>=99){
System.out.println("100줄 초과");
break;
}
else{
String[] array = sentence.split("");
for(String word:array) {
for(int i=0; i<word.length(); i++) {
int index = word.charAt(i);
if(index>=48 && index<=57) {
}
else if(index>=65 && index<=90) {
}
else if(index>=97 && index<=122) {
}
else {
System.out.printf("잘못 입력 된 값:%s",word);
clear = 1;
}
//System.out.print(array[i]);
}
}
words.add(sentence);
cnt++;
if(clear==1) {
words.clear(); //ArrayList 초기화
clear=0;
}
}
if(sentence.isEmpty()) {
for(int i=0; i<words.size(); i++) {
System.out.println(words.get(i));
}
words.clear();
}
}
}
}
//startsWith()은 sentence의 맨처음 값을 비교한다. endsWith()은 sentence의 맨 마지막 값을 비교한다. sentence.length()은 sentence의 글자 길이를 알려준다.
words.add(sentence); 은 words라는 ArrayList 객체에 sentence의 값을 넣어준다.
words.get(i)를 이용해서 ArrayList에 저장되 있던 값들을 모두 출력한다.
알고리즘 11718번을 통해 사용한 METHOD
hasNext()
startsWith()
endsWith()
words.add(sentence)
words.get(i)