안녕하세여 ㅎ 다름이 아니라  제가 지금 개 골썩고 있는 문제가 있는데 좀 도와주십사... 모셨슴미다^^


(문제) ctrl-z가 입력될 때까지 키보드로부터 문자열을 읽고 (띄어쓰기가 있는 문장도 허용하기 위해 입력 받을 때 
Scanner.nextLine()을 사용) 사용자가 입력한 문자열에서 제일 긴 단어를 출력하는 프로그램을 작성하라. 단어는 공백으로 분리한다. 

클래스 이름은 LongCountWord


인데여 쌉빡고수님들

보시면 아시겠지만 Input리더(영어 철자 기억이 안남) 어쩌구는 사용이 안되더라구여 심지어 교수님이 


** 반복문과 StringTokenizer클래스를 이용하여 'ctrz-z'가 입력 될 때까지 계속 문자열을 입력받도록 한다. 
** 'ctrl-z'를 누르면 다음과 같은 출력 메시지가 뜨도록 하시오: "가장 긴 단어는 ????? 이다.


라는 추가 조건을 내걸었슴미다. 그리고 try-catch 를 사용하고 Exception 타입은 NoSuchElementException 로 정하셨습니다.


제가 앉아서 손가락만 빨진 않았고 어느 정도 하기는 했거든여

그런데 ㅋㅋ 쓸모없음ㅋㅋ ㅎㅎㅈㅅ;;!!


제 문제점

1. 빡머갈임

2. 클래스 두 개(LongCountWord 랑 StringTokenizer)로 나뉘어야 하는 것 같은데 어느 클래스에 뭐시기가 들어가야 되는지도 모르겠고 나누지도 못함

3. 일단 LongCountWord 에 싸잡아 넣었는데 입력받고 ctrl+z 해도 가장 긴 단어는 null 이다. 라고 나옴


밑에는 제코드입니다 세상최초존잘 행님덜

=================

import java.util.*; 

import java.io.*;


public class LongWordCount {

public static void main (String[] args) throws NoSuchElementException {

Scanner scner = new Scanner(System.in);

String munza;

String longest = null;


System.out.print("문자열을 입력하시오>>");

try {

while(true) {

munza = scner.nextLine();

StringTokenizer st = new StringTokenizer(munza);

int gulza = st.countTokens();

longest = st.nextToken();

for (int i=0; i<gulza; i++) {

String token = st.nextToken();

if (token.length() > longest.length())

longest = token;

}

}

}

catch (NoSuchElementException e) { // ctrl-z 입력 시 발생하는 예외

System.out.println("\n가장 긴 단어는 " + longest + "이다."); // 누적 단어 갯수 출력

}

}

}