728x90
1번문제
SmartTelevision을 자동채널변경시스템을 Searchable 인터페이스를 통해 구현하시오
ex) 10.20.25.120 채널이 있다. 일정값을 입력받으면
가까운번호의 채널로 자동 변경하는 시스템을 구축해라
package package001;
//SmartTelevision의 부모
//[public] interface 인터페이스명{}
public interface Searchable {
//추상메소드
//타입 메소드명(매개변수);
void search(String url);
default void setChannel(int channel) {
if (channel > 0 && channel < 15){
channel = 10;
} else if (channel >= 15 && channel < 23){
channel = 20;
} else if (channel >= 23 && channel < 47){
channel = 25;
} else {
channel = 120;
}
System.out.println("현재 tv 채널 " + channel);
}
}
public class SmartTelevision implements Searchable {
}
import package001.*;
import java.util.Scanner;
public class main {
public static void main(String[] arg){
//문제1. SmartTelevision을 자동채널변경시스템을
//Searchable 인터페이스를 통해 구현하시오
//ex) 10.20.25.120 채널이 있다 일정값을 입력받으면
//가까운번호의 채널로 자동변경하는 시스템을 구축하시오
example1();
}
private static void example1() {
System.out.println("--------");
Scanner sc = new Scanner(System.in);
int inputnum = sc.nextInt();
SmartTelevision smartTV = new SmartTelevision();
smartTV.setChannel(inputnum);
}
}
2번문제
김준석 박준석 이준석은 리모콘을 각각 갖고있다.
김준석은 5초마다 박준석은 3초마다 이준석은 11초마다 채널을 바꾸고있다.
각이름의 인터페이스 혹은 부모클래스를 만들고 바꾸고싶은 채널을 배열에 입력받아
순차적으로 채널이 바뀌는 시스템 구축해라
자바에서 몇초간 쉬는 내장매서드가 있다.
package package0006;
public class Audio implements RemoteControl{
private int volume;
public void turnOn() {
System.out.println("Audio를 킵니다.");
}
public void turnOff() {
System.out.println("Audio를 끕니다.");
}
public void setVolume(int volume) {
if (volume > RemoteControl.MAX_VOLUME) {
this.volume = RemoteControl.MAX_VOLUME;
} else if (volume < RemoteControl.MIN_VOLUME) {
this.volume = RemoteControl.MIN_VOLUME;
} else {
this.volume = volume;
}
System.out.println("현재 Audio 볼륨: " + this.volume);
}
public void search(String url) {
System.out.println(url + " ");
}
}
package package0006;
public interface Human {
String name = "";
void changeChannel(String[] Channel, int second, int num, int i);
}
package package0006;
import java.util.concurrent.TimeUnit;
public class Kim implements Human {
String name = "김준석";
public void changeChannel(String[] arr, int second, int num, int i) {
try {
String[] Channel = arr.clone();
TimeUnit.SECONDS.sleep(second);
System.out.println(i + " " + name + "의 현재 채널: " + Channel[num % Channel.length]);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package package0006;
import java.util.concurrent.TimeUnit;
public class Lee implements Human {
String name = "이준석";
public void changeChannel(String[] arr, int second, int num, int i) {
try {
String[] Channel = arr.clone();
TimeUnit.SECONDS.sleep(second);
System.out.println(i + " " + name + "의 현재 채널: " + Channel[num % Channel.length]);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package package0006;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
public class main {
public static void main(String[] args) {
submain sm = new submain();
sm.changeChannel();
}
}
class submain {
Scanner scan = new Scanner(System.in);
public void tvAudio() {
SmartTelevision tv = new SmartTelevision();
RemoteControl.changeBattery();
Audio audio = new Audio();
audio.turnOn();
audio.turnOff();
audio.setVolume(10);
System.out.println("Start");
tv.setMute(true);
tv.setChannel(80);
}
public void changeChannel(){
System.out.println("채널을 입력하세요.");
System.out.println("ex) 20 30 45 70 120");
System.out.print(">> ");
String str = scan.nextLine();
String[] Channel = str.split("\\s+");
Kim kim = new Kim();
Lee lee = new Lee();
Park park = new Park();
int a = 0;
int b = 0;
int c = 0;
int i = 0;
while (true) {
i++;
if (i % 3 == 0) {
park.changeChannel(Channel, 1, a, i);
a++;
if (i % 5 == 0) {
kim.changeChannel(Channel, 0, b, i);
b++;
}
if (i % 11 == 0) {
lee.changeChannel(Channel, 0, c, i);
c++;
}
}
else if (i % 5 == 0) {
kim.changeChannel(Channel, 1, b, i);
b++;
if (i % 11 == 0) {
lee.changeChannel(Channel, 0, c, i);
c++;
}
}
else if (i % 11 == 0) {
lee.changeChannel(Channel, 1, c, i);
c++;
}
else {
try {
TimeUnit.SECONDS.sleep(1);
System.out.println(i + " 시간이 가는 중...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
package package0006;
import java.util.concurrent.TimeUnit;
public class Park implements Human {
String name = "박준석";
public void changeChannel(String[] arr, int second, int num, int i) {
try {
String[] Channel = arr.clone();
TimeUnit.SECONDS.sleep(second);
System.out.println(i + " " + name + "의 현재 채널: " + Channel[num % Channel.length]);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package package0006;
public interface RemoteControl {
int MAX_VOLUME = 10;
int MIN_VOLUME = 0;
int BATTERY_COUNT = 0;
int batterys = 0;
void turnOn();
void turnOff();
void setVolume(int volume);
default void setMute(boolean mute) {
if(mute) {
System.out.println("무음");
} else {
System.out.println("무음 해제");
}
}
static void changeBattery() {
System.out.println("배터리 교체");
}
}
package package0006;
public interface Searchable {
void search(String url);
default void setChannel(int channel) {
if (channel > 0 && channel < 15) {
channel = 10;
} else if (channel >= 15 && channel < 23) {
channel = 20;
} else if (channel >= 23 && channel < 73) {
channel = 25;
} else {
channel = 120;
}
System.out.println("현재 tv 채널 " + channel);
}
}
package package0006;
public class SmartTelevision implements RemoteControl, Searchable {
private int volume;
public void turnOn() {
System.out.println("tv를 킵니다.");
}
public void turnOff() {
System.out.println("tv를 끕니다.");
}
public void setVolume(int volume) {
if (volume > RemoteControl.MAX_VOLUME) {
this.volume = RemoteControl.MAX_VOLUME;
} else if (volume < RemoteControl.MIN_VOLUME) {
this.volume = RemoteControl.MIN_VOLUME;
} else {
this.volume = volume;
}
System.out.println("tv 볼륨 " + this.volume);
}
public void search(String url) {
System.out.println(url + " 검색합니다.");
}
}
https://www.delftstack.com/ko/howto/java/how-to-delay-few-seconds-in-java/
3번문제
사람마다 선호하는채널이 있습니다.
사용했던 채널의 정보를 저장하는 시스템을 상속받아구현하고
SmartTelevision에 로그인하면 선호채널 중 가장 많이 출력한 채널을 자동으로 바꿔주는 시스템을 구현해라
(채널확인하는 부모클래스와 자동으로 채널을 바꿔주는 자식클래스의 형변환을 적용하시오)
텔레비젼 처음 틀었을때는 초기값 아무거나 할당
텔레비젼 채널번호를 입력 하는것들을 저장소에 저장 시킨다음
그다음 텔레비젼을 끄고난뒤에 다시 켰을때, 가장 많이 틀었던 채널 번호가 나와야한다.
ex) 초기값:1 번이면
그이후 3번이 1번 4번이 2번 5번이 5번 이후 다시켰을때 5번이 나온다.
package solution3;
import java.util.Scanner;
public interface Channel_change extends solution3.Favorite_ch {
static void initial_ch(User_proto a) {
System.out.println("기본 채널을 틉니다");
a.current_channel = default_channel;{
System.out.println("현재 채널 : " + a.current_channel);
}
static void ch_change(User_proto a) {
a.current_channel = solution3.Favorite_ch.ch_check(a);
System.out.println("현재 채널 : " + a.current_channel);
}
}
package solution3;
import java.util.Arrays;
public interface Favorite_ch {
int default_channel = 5;
static int ch_check(User_proto a) {
int[] arr = new int[a.channels.size()];
for (int i=0; i<arr.length; i++) {
arr[i] = a.channels.get(i);
}
Arrays.sort(arr);
int answer = 0;
int[] index = new int[arr[arr.length-1]+1];
int max = Integer.MIN_VALUE;
for (int i : a.channels) {
index[i]++;
}
for(int i=0; i<index.length; i++) {
if(index[i]>max) {
max = index[i];
answer = i;
}
} System.out.println("선호 채널은 " + answer + "번 입니다");
return answer;
}
}
package solution3;
import java.util.Scanner;
public abstract class Save {
public Scanner scan = new Scanner(System.in);
public void ch_save(User_proto a) {
try{
scan.nextLine();
while(true) {
System.out.print("(그만하기: 아무키나 눌러주세요) 채널을 입력해주세요 : ");
String input_ch = scan.nextLine();
if(input_ch.equals("n")) {
System.out.println("채널 저장을 그만둡니다.");
break;
} else {
a.channels.add(Integer.parseInt(input_ch));
}
}
} catch(NumberFormatException e) {
System.out.println("채널 저장을 그만둡니다.");
}
}
}
package solution3;
import java.util.ArrayList;
public class User_proto extends Save implements solution3.Channel_change {
private String id;
private int password;
public ArrayList<Integer> channels = new ArrayList<Integer>();
public int current_channel = 0;
private static User_proto[] user_list = {
new User_proto("용사",132),
new User_proto("네이버",111)
};
public User_proto() {}
private User_proto(String input_id,int input_password) {
this.id = input_id;
this.password = input_password;
}
public User_proto user_login_id() {
User_proto user_confirm = null;
while(true) {
System.out.print("id를 입력해주세요 : ");
String check_id = scan.nextLine();
for (User_proto user : user_list) {
if (user.id.equals(check_id)) {
user_confirm = user;
break;
}
} if(user_confirm != null) {
break;
} else {
System.out.println("존재하지 않는 아이디입니다.");
}
}
User_proto a = user_login_pw(user_confirm);
return a;
}
public User_proto user_login_pw(User_proto a) {
while(true) {
System.out.print("비밀번호를 입력해주세요 : ");
int input_pw = scan.nextInt();
if (a.password == input_pw) {
System.out.println(a.id + "님 반갑습니다.");
break;
} else {
System.out.println("비밀번호를 잘못입력했습니다.");
}
} return a;
}
public void user_logout() {
System.out.println("로그아웃합니다.");
}
}
import solution3.User_proto;
public class Main {
public static void main(String[] arg) {
User_proto user = new User_proto();
smartTV(user);
}
public static void smartTV(User_proto a) {
int i = 0;
while(i<6) {
solution3.Channel_change.initial_ch(a);
System.out.println("-----------------");
User_proto confirmed_user = a.user_login_id();
System.out.println("-----------------");
a.ch_save(confirmed_user);
System.out.println("-----------------");
solution3.Channel_change.ch_change(confirmed_user);
System.out.println("-----------------");
confirmed_user.user_logout();
System.out.println("=================\n");
i++;
}
}
}
728x90
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 22-06-20 자바 Overloading / Overriding ☑ (0) | 2022.07.05 |
---|---|
[JAVA] 인터페이스 ! 개념 이해 추가 정리 ☑ (0) | 2022.07.04 |
[JAVA] 22-07-01 인터페이스 ☑ (0) | 2022.07.01 |
[JAVA] 22-06-30 추상클래스 ☑ (0) | 2022.06.30 |
[JAVA] 22-06-29 다형성 형변환 ☑ (0) | 2022.06.29 |