예제를 실행하면 '>>'와 같은 프롬프트가 나타나서 사용자의 입력을 기다리고, 사용자가 입력한 내용을 화면에 출력한다. 만일 사용자가 'q' 또는 'Q'를 입력하면 프로그램을 종료한다. 다음의 예제를 완성하세요
import java.util.*;
public class ConsoleEx1 {
public static void main(String[] args) {
while(true) {
String prompt = ">>";
System.out.print(prompt);
Scanner s = new Scanner(System.in);
String input = s.nextLine();
System.out.println(input);
if(input.equalsIgnoreCase("q")){
break;
}
} // while(true)
} // main
} // class
사용자가 입력한 명령라인을 공백(' ')을 구분자로 해서 잘라서 배열에 저장한 다음에 배열의 내용을 출력하는 예제. 코드를 완성하세요.
class ConsoleEx2 {
static String[] argArr; // 입력한 매개변수를 담기위한 문자열배열
public static void main(String[] args) {
while(true) {
String prompt = ">>";
System.out.print(prompt);
// 화면으로부터 라인단위로 입력받는다.
Scanner s = new Scanner(System.in);
String input = s.nextLine();
String[] argArr = input.trim().split(" +");
// 정규표현식으로서 얼마간의 공백이든 공백 하나로 처리한다
// == split("\\s+");
if(input.equalsIgnoreCase("Q")) { // q 또는 Q를 입력하면 실행종료한다.
System.exit(0);
} else {
for(int i=0; i < argArr.length;i++) {
System.out.println(argArr[i]);
}
/* 위의 코드를 향상된 for문으로 변경하면 다음과 같다.
for(String arg : argArr) {
System.out.println(arg);
}
*/
}
} // while(true)
} // main
} // class
사용자가 입력한 명령라인의 내용을 저장하는 save(String input)메서드와 사용자가 입력한 명령라인의 이력을 보여주는 history()메서드를 완성하세요.
import java.util.*;
class ConsoleEx3 {
static String[] argArr; // 입력한 매개변수를 담기위한 문자열배열
static LinkedList q = new LinkedList(); // 사용자가 입력한 내용을 저장할 큐(Queue)
static final int MAX_SIZE = 5; // q(큐)에 저장될 수 있는 값의 개수
public static void main(String[] args) {
Scanner s = new Scanner(System.in); // 한번만 생성해서 재사용하면 되므로 반복문 밖으로 이동
while(true) {
String prompt = ">>";
System.out.print(prompt);
// 화면으로부터 라인단위로 입력받는다.
String input = s.nextLine();
save(input);
input = input.trim(); // 입력받은 값에서 불필요한 앞뒤 공백을 제거한다.
argArr = input.split(" + ");
String command = argArr[0].trim();
if("".equals(command)) continue;
command = command.toLowerCase(); // 명령어를 소문자로 바꾼다.
if(command.equals("q")) { // q 또는 Q를 입력하면 실행종료한다.
System.exit(0);
} else if(command.equals("history")) { // equalsIgnoreCase대신 equals를 사용.
history();
} else {
for(int i=0; i < argArr.length;i++) {
System.out.println(argArr[i]);
}
}
} // while(true)
} // main
public static void save(String input) {
if(input==null || "".equals(input)) return;
q.add(input);
if(q.size()>MAX_SIZE){
q.poll();
}
}
// 사용자가 입력한 최근 명령을 보여주는 메서드
public static void history() {
for(int i = 0; i < q.size(); i++){
Object aa = q.get(i);
System.out.println((i+1)+"."+aa);
}
}
} // class
사용자 입력을 받는 프롬프트에 현재 작업중인 폴더(디렉토리)의 경로를 표시하는 예제의 코드를 완성하세요.
import java.util.*;
import java.io.*;
class ConsoleEx4 {
static String[] argArr; // 입력한 매개변수를 담기위한 문자열배열
static LinkedList q = new LinkedList(); // 사용자가 입력한 내용을 저장할 큐(Queue)
static final int MAX_SIZE = 5; // Queue에 최대 5개까지만 저장되도록 한다.
static File curDir; // 현재 디렉토리
static {
try{
String systemType = "user.dir";
File tempFile = new File(systemType);
curDir = tempFile.getAbsoluteFile();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in); // 한번만 생성해서 재사용하면 되므로 반복문 밖으로 이동
while(true) {
try {
String prompt = curDir.getCanonicalPath() + ">>";
System.out.print(prompt);
// 화면으로부터 라인단위로 입력받는다.
String input = s.nextLine();
save(input);
input = input.trim(); // 입력받은 값에서 불필요한 앞뒤 공백을 제거한다.
argArr = input.split(" +");
String command = argArr[0].trim();
if("".equals(command)) continue;
command = command.toLowerCase(); // 명령어를 소문자로 바꾼다.
if(command.equals("q")) { // q 또는 Q를 입력하면 실행종료한다.
System.exit(0);
} else if(command.equals("history")) {
history();
} else {
for(int i=0; i < argArr.length;i++) {
System.out.println(argArr[i]);
}
}
} catch(Exception e) {
System.out.println("입력오류입니다.");
}
} // while(true)
} // main
public static void save(String input) {
if(input==null || "".equals(input)) return;
q.add(input); // queue에 저장한다.
// queue의 최대크기를 넣으면 제일 오래된 저장값을 삭제한다.
if(((LinkedList)q).size() > MAX_SIZE)
q.remove();
}
public static void history() {
int i=0;
// LinkedList의 내용을 보여준다.
ListIterator it =q.listIterator();
while(it.hasNext()) {
System.out.println(++i+"."+it.next());
}
}
} // class
//여기서 접는다 도움이 안되는 거 같다.
댓글 없음:
댓글 쓰기