JAVA
221014 인터페이스 실습
주영재
2022. 10. 14. 16:51
인터페이스
package quiz15;
public interface SongList {
public void insertList(String song);
public void playList();
public int playLength();
}
자식
package quiz15;
public class MelonMusic implements SongList {
/*
* SongList인터페이스를 상속받아서 기능을 구현합니다.
* insertList() 는 list배열에 순서대로 저장
* playList() list의 음악을 랜덤하게 출력
* playLength() 는 저장된 음악의 개수를 반환
*/
private String[] list = new String[100];
private int count = 0;
@Override
public void insertList(String song) {
list[count]=song;
count++;
}
@Override
public void playList() {
if(count==0){System.out.println("곡이 없음"); return;}
System.out.println(list[(int)(Math.random()*count)]);
}
@Override
public int playLength() {
return count;
}
}
insertList메서드는 호출될 때마다 값을 받을 테니 안에서 반복문을 돌릴 필요가 없음
노래가 추가되지 않으면 내용물이 없으니 출력을 다르게.
노래가 있으면 출력할 수 있는 곡은 1~받은 노래 개수
인덱스번호는 0~받은개수-1이니 Math.random()-(0<= <1)*count
main
package quiz15;
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//바깥에 객체생성
SongList m= new MelonMusic();
while(true){
System.out.println("메뉴[1.추가, 2.재생, 3.개수, 4.종료]");
System.out.print(">");
int num=scan.nextInt();
if(num==1) {
System.out.print("노래>");
m.insertList(scan.next());
} else if(num==2) {
m.playList();
} else if(num==3) {
System.out.println("재생곡개수:"+m.playLength());
} else if(num==4) {
System.out.println("종료");
return;
}
}
// SongList s = new MelonMusic();
// s.insertList("가시");
// s.insertList("미인");
// s.insertList("같은 베개");
// s.insertList("벚꽃엔딩");
// s.playList();
// System.out.println(s.playLength());
}
}
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
곡이 없음
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>1
노래>가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>1
노래>미인
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>1
노래>같은베개
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
미인
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
미인
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
가시
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>2
같은베개
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>3
재생곡개수:3
메뉴[1.추가, 2.재생, 3.개수, 4.종료]
>4
종료
객체생성의 위치 파악하기. 반복문안에있으면 계속 새로 생성됨.