일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 그리디 알고리즘
- 프로그래머스
- FCF
- 제태크
- 금리인상
- 알고리즘
- 무디스
- 객체지향
- 주식
- 현금흐름표
- 자바
- S&P500
- 인플레이션
- XLF
- 백준
- mco
- 기업분석
- StringBuffer
- 오버라이딩
- etf
- 접근제어자
- 주린이
- 다형성
- 배당성장
- 잉여현금흐름
- Java
- object
- javascript
- 미국주식
- 금리인하
- Today
- Total
오늘의하루
[Java1000제] 콘솔 만들기 - 남궁성의 초보 코드 스터디 본문
남궁성의 코드초보스터디(자바 java... : 네이버 카페
전문가가 지도하는 스터디카페에요. 프로그래밍언어(자바 java, C언어)를 제대로 배우고픈 분들 오세요.
cafe.naver.com
1단계
[문제1] 에제를 실행하면 '>>'와 같은 프롬프트가 나타나서 사용자의 입력을 기다리고,
사용자가 입력한 내용을 화면에 출력한다. 만일 사용자가 'q' 또는 'Q'를 입력하면 프로그램을 종료한다.
다음의 예제를 완성하세요.
[예제ConsoleEx1.java]
import java.util.*;
class ConsoleEx1 {
public static void main(String[] args) {
while(true) {
String prompt = ">>";
System.out.print(prompt);
/*
다음과 같은 내용의 코드를 넣으세요.
1. 화면으로부터 라인단위로 입력받는다. - java.util.Scanner클래스 사용
2. q 또는 Q를 입력하면 실행종료한다.
*/
} // while(true)
} // main
} // class
[실행결과]
>>hello
hello
>>help
help
>>ok
ok
>>q
import java.util.*;
public class Q1{
public static void main(String[] args){
while(true){
String prompt = ">>";
System.out.print(prompt);
// ========================
Scanner s = new Scanner(System.in);
String str = s.nextLine();
if (str.equalsIgnoreCase("Q")){
System.exit(0);
}esle{
System.out.println(str);
}
// ========================
}
}
}
2단계
[문제2] 사용자가 입력한 명령라인을 공백(' ')을 구분자로 해서 잘라서 배열에 저장한 다음에
배열의 내용을 출력하는 예제. 코드를 완성하세요.
[예제ConsoleEx2.java]
import java.util.*;
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();
/*
다음의 코드를 완성하세요.
1. 입력받은 값에서 앞뒤 공백을 제거한다. (String클래스의 trim()사용)
2. 입력받은 명령라인의 내용을 공백을 구분자로 해서 나눠서 argArr에 담는다.
String클래스의 split(String regex)를 사용 - 공백이 하나 이상인 경우에도 하나의 공백으로 간주해야함
실행결과를 주의깊게 확인하세요.
*/
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
[실행결과]
>>java ConsoleEx2.java aaa bbb ccc
java
ConsoleEx2.java
aaa
bbb
ccc
>>q
import java.util.*;
public class HelloWorld {
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(" +");
// " +"은 뒤에 무조건 문자가 있어야한다는 정규표현식이다.
// ================================
if(input.equalsIgnoreCase("Q")){
System.exit(0);
}else{
for(int i = 0; i < argArr.length; i++){
System.out.println(argArr[i]);
}
}
}
}
}
3단계
[문제3] 사용자가 입력한 명령라인의 내용을 저장하는 save(String input)메서드와 사용자가 입력한
명령라인의 이력을 보여주는 history()메서드를 완성하세요.
[예제ConsoleEx3.java]
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;
/*
다음의 코드를 완성하세요.
1. queue에 저장한다.
2. queue의 최대크기(MAX_SIZE)를 넣으면 제일 오래된 저장값을 삭제한다.
*/
}
// 사용자가 입력한 최근 명령을 보여주는 메서드
public static void history() {
int i=0;
/*
다음의 코드를 완성하세요.
1. LinkedList에 저장된 내용(최근 MAX_SIZE개의 명령어)을 보여준다.
*/
}
} // class
// Online Java Compiler
// Use this editor to write, compile and run your Java code online
import java.util.*;
public class HelloWorld {
static String[] argArr;
static LinkedList q = new LinkedList();
static final int MAX_SIZE = 5;
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")){
System.exit(0);
}else if (command.equals("history")){
history();
}else{
for(int i = 0; i < argArr.length; i++){
System.out.println(argArr[i]);
}
}
}
}
public static void save(String input){
if(input == null || "".equals(input)){
return;
}
//=============================
System.out.println(input + " Saving....");
q.offer(input); // 추가
if(q.size() > MAX_SIZE){
q.poll(); // 가장 밑에 있는 값을 삭제한다.
}
//=============================
}
public static void history(){
int i = 0;
// ============================
for(int k = 0; k < q.size(); k++){
System.out.println(q.get(k));
// 배열이 아니기 때문에 q[k] 이런건 안된다.
}
// ============================
}
}
'JAVA' 카테고리의 다른 글
[JAVA] Iterator Method 관련 내용 (0) | 2022.08.18 |
---|---|
[JAVA] Collection Framework 정리 (0) | 2022.08.17 |
Java.lang 패키지 요약 (Object, String, StringBuffer) (0) | 2022.08.10 |
[JAVA] 객체지향 개념 다형성 상속 추상화 인터페이스 (0) | 2022.08.09 |
[JAVA] StringBuilder클래스와 Math클래스 확인하기 (0) | 2022.08.08 |