스터디 : 09.12 11:00 ~17:00, 주어진 문제 풀어보고 풀이 비교
1. 정수를 몇 개 저장할지 키보드로부터 개수를 입력받아(100보다 작은 개수로 제한한다.) 정수 배열을 생 성하고, 이곳에 1에서 100까지 범위의 정수를 랜덤하게 삽입하시오. 같은 값은 생성하지 못하도록 설정하 고 생성된 배열을 출력하시오.
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class ex05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Set<Integer> unit = new HashSet<Integer>();
System.out.print("배열의 크기를 정해주세요 > " );
int size = sc.nextInt();
while(unit.size()<size) {
for(int i=0; i<size; i++) {
unit.add((int)(Math.random()*100)+1);
break;
}
}
System.out.println("unit의 배열 : " + unit);
}
}
2. 돈을 입력받아 오만원권, 만원권, 오천원권, 천원권, 오백원 동전, 백원 동전, 오십원 동전, 십원 동전, 오원 동전, 일원 동전이 각각 몇 개로 변환되는지 출력하시오. 이 때 반드시 다음과 같은 배열을 사용하여 반복문으로 처리하시오.
int[] unit = {50000, 10000, 5000, 1000, 500, 100, 50, 10, 5, 1};
import java.util.Scanner;
public class ex04 {
public static void main(String[] args) {
int[] unit = {50000, 10000, 5000, 1000, 500, 100, 50 ,10, 5, 1};
Scanner sc = new Scanner(System.in);
System.out.print("돈을 입력하시면 변환 금액을 알려드리겠습니다. >> ");
int money = sc.nextInt();
int num =0;
for(int i =0; i<unit.length; i++) {
num = money/unit[i];
if(money%unit[i]!= 0) {
System.out.println(unit[i]+"의 지폐 수 : " + num);
} else if (money%unit[i] == 0) {
System.out.println(unit[i]+"의 지폐 수 : " + num);
} money = money%unit[i];
}
}
}
3. 이름(name), 전화번호(tel) 필드와 생성자 등을 가진 Phone 클래스를 작성하고, 실행 예시와 같이 작 동하는 PhoneBook 클래스를 작성하시오.
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@ToString
class Phone{
private String name;
private String tel;
}
class PhoneBook{
Scanner sc = new Scanner(System.in);
List<Phone> phone;
PhoneBook(){
phone = new ArrayList<Phone>();
}
void addphonebook() {
System.out.print("저장 인원 수 >> ");
int num = sc.nextInt();
for(int i=0; i<num; i++) {
System.out.print("이름과 전화번호 >> ");
String name = sc.next();
String tel = sc.next();
phone.add(new Phone(name, tel));
}
System.out.println("저장되었습니다. ");
}
void search() {
System.out.print("검색할 이름 > ");
String name = sc.next();
sc.nextLine();
for(Phone phones : phone) {
if(phones.getName().equals(name)) {
System.out.println(phones.getName()+"의 번호는 "+ phones.getTel()+"입니다.");
break;
} else {
System.out.println(name + "이 없습니다. ");
break;
}
}
}
void manage() {
while(true) {
System.out.println("====phonebook에는 저장(1),검색(2), 종료(3) 기능이 있습니다. ====");
System.out.print("===번호를 입력해주세요. ");
int choice = sc.nextInt();
switch(choice) {
case 1: addphonebook(); break;
case 2: search(); break;
case 3: System.out.println("프로그램 종료"); return;
default : System.out.println("잘못입력했습니다."); break;
}
}
}
}
public class ex1 {
public static void main(String[] args) {
PhoneBook pb = new PhoneBook();
pb.manage();
}
}
4. 갬블링 게임
게임에 참여하는 선수의 수를 입력받고 각 선수의 이름을 입력하시오. 각 사람은 Person 클래스로 작성한 다. 선수가 한 번씩 게임을 진행하며 각 사람이 자기 차례에서 Enter를 누르면 3개의 난수(1~3사이)가 발 생하며 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
class Person {
private String name;
}
class Game {
List<Person> person;
Scanner sc;
Game(){
person = new ArrayList<Person>();
sc = new Scanner(System.in);
System.out.print("겜블링 게임에 참여할 선수 숫자 >> ");
int num = sc.nextInt();
for(int i=0; i<num; i++) {
System.out.print((1+i)+"번째 선수 이름 > ");
String name = sc.next();
sc.nextLine();
person.add(new Person(name));
}
}
void game() {
int[] number = new int[3];
for(int i =0 ;i<person.size(); i++) {
System.out.println(person.get(i).getName()+": <Enter>");
for(int j =0; j<number.length; j++) {
number[j] = (int)(Math.random()*3)+1;
}
if(number[0]==number[1]) {
if(number[1]==number[2]) {
System.out.println(Arrays.toString(number) +" "+person.get(i).getName()+" 승리!" );
}
} else System.out.println(Arrays.toString(number)+" "+person.get(i).getName()+" 아쉽군요!");
}
}
}
'국비 > 스터디' 카테고리의 다른 글
스터디1_인터페이스 설계도 (0) | 2021.09.05 |
---|
댓글