Member 1. 난수 발생 -> 배열의 위치를 변경
2. a= (int) (Math.random() * 10);
-> 곱하기할 때, 괄호를 항상 넣어줘야 한다.
그렇지 않으면, random에서 소수점이 나오는데 정수형변환할 때,
0으로 출력이 된다.
Array를 이용한 카드랜덤뽑기
public static void main(String[] args) {
Random rd = new Random();
String[] card = { "하트1", "하트2", "하트3", "하트4", "하트5", "하트6", "하트7", "하트8", "하트9", "하트10"};
String temp;
int a, b;
for(int i=0;i<100;i++)
{
//Math클래스의 random
a= (int) (Math.random() * 10);
//Random클래스의 random
b= rd.nextInt(10);
//스와핑 기법
temp = card[a];
card[a] = card[b];
card[b] = temp;
}
for(int i=0;i<10;i++)
{
System.out.print(card[i]);
}
}
Array 클래스
public static void main(String[] args) {
int arr[] = {52,38,43,21,15,27,32,54,36,79};
//배열의 정렬
Arrays.sort(arr);
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i] + " ");
}
//배열의 숫자를 찾는다.
System.out.println("\n54가 있는 위치 : "+Arrays.binarySearch(arr, 54));
int arr2[] = new int[100];
//arr2 배열에 있는 값 1부터 100까지 2로 바꿔준다.
Arrays.fill(arr2, 1, 100, 2);
for(int i=0;i<arr2.length;i++)
{
System.out.print(arr2[i]+ " ");
}
}
Comparable 인터페이스
class Sagak implements Comparable {
private int width;
private int height;
public Sagak(int width, int height) {
this.width = width;
this.height = height;
}
public int getArea() {
return width * height;
}
public int compareTo(Object o) {
Sagak s = (Sagak) o ;
return getArea() - s.getArea();
//양수가 들어오면 CampareTo()메소드를 호출한 사각 객체가 더 크다.
//음수가 들어오면 s 객체가 더 크다.
}
}
public class Compareable_Exam {
public static void main(String[] args) {
Sagak a = new Sagak(1, 2);
Sagak b = new Sagak(2, 3);
System.out.println(a.compareTo(b));
//객체 간의 넓이를 기준으로 정렬을 할 수 있다.
Sagak[] arr = { new Sagak(2, 5), new Sagak(3, 3), new Sagak(1, 2), new Sagak(6, 9), new Sagak(2, 2) };
Arrays.sort(arr);
for(int i=0;i<arr.length;i++)
{
System.out.print(arr[i].getArea() + " ");
}
}
}
ArrayList 클래스 예제
public static void main(String[] args) {
//ArrayList 객체 생성
ArrayList<String> list = new ArrayList<String>();
//ArrayList의 String 타입의 데이터 저장
list.add("포도");
list.add("참외");
list.add("복숭아");
//ArrayList에 있는 데이터의 수 리턴하고 num에 저장
int num = list.size();
for(int i=0;i<num;i++)
{
//ArrayList에 있는 데이터들을 받아서 출력
System.out.println(list.get(i));
}
}
문자열 추가 삭제
public class ArrayList_Exam {
static void displayList(ArrayList list) {
System.out.println("\n----------------목록----------------");
for(int i=0;i<list.size();i++)
{
System.out.print(list.get(i) +" ");
}
System.out.println();
}
public static void main(String[] args) throws Exception {
//br.readLine()에 대한 예외처리문
//ArrayList 생성
ArrayList<String> list = new ArrayList<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String select;
while(true)
{
System.out.println("<<1. 추가 | 2. 삭제 | 3. 종료>>");
System.out.print("선택하세요! : ");
select = br.readLine(); //한 줄씩 입력 받기
if(select.equals("1"))
{
System.out.println("추가할 문자열 입력하세요 : ");
list.add(br.readLine());
displayList(list);
}
else if (select.equals("2"))
{
System.out.println("삭제할 문자열 입력하세요 : ");
//list의 삭제
list.remove(br.readLine());
displayList(list);
}
else if (select.equals("3"))
{
System.out.println("종료합니다.");
br.close();
break;
}
}
}
해쉬테이블을 이용한 스케쥴 관리표 만들기
public class Schedule {
private Hashtable<String, String> ht;
public Schedule(){
ht = new Hashtable<String,String>();
}
public String readKeyboard(){
String input = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try{
input = br.readLine();
}catch(Exception e){}
return input;
}
public int printMenu(){
int input = 0;
do{
System.out.println("<1.스케쥴 확인 2.스케쥴추가 3. 스케쥴삭제 4.종료");
System.out.println("선택하세요:");
try{
input = Integer.parseInt(readKeyboard());
}catch(Exception e){}
}while(input != 1 && input != 2 &&input != 3 && input != 4);
return input;
}
public void select(int input){
switch(input){
case 1:
//Enumeration의 형식으로 Key의 List를 리턴
Enumeration<String> en = ht.keys();
//리턴받은 객체를 가지고 있으면 다음 것을 리턴, 그렇지 않으면 null값 출력
while(en.hasMoreElements()){
System.out.println(en.nextElement());
}
System.out.println("확인하실 스케쥴을 입력하세요");
String str = readKeyboard();
//해쉬테이블의 데이터를 찾아서 출력
System.out.println(str + " " + ht.get(str) );
break;
case 2:
System.out.println("날짜를 입력하세요 ex)2009/07/14");
String date = readKeyboard();
System.out.println("스케쥴을 입력하세요");
String sch = readKeyboard();
//해쉬테이블의 날짜와 내용을 입력
ht.put(date, sch);
break;
case 3:
Enumeration<String> den = ht.keys();
while(den.hasMoreElements()){
System.out.println(den.nextElement());
}
System.out.println("삭제할 스케쥴의 날짜를 입력하세요");
String del = readKeyboard();
//해쉬테이블의 데이터를 삭제
ht.remove(del);
break;
case 4:
System.exit(0);
}
}
public void gameStart(){
while(true){
int input =printMenu();
select(input);
}
}
public static void main(String[] args) {
Schedule sch = new Schedule();
sch.gameStart();
}
}
과제1>배열을 이용하여 로또 프로그램을 만들어 보자.
1 - 45까지의 중복되지 않는 숫자를 이용하여 6개의
숫자를 출력되도록 하자.
ArrayList_Test01.java
import java.util.*;
public class ArrayList_Test01 {
public static void main(String[] args) {
int[] arr = new int[45];
int a,b,c;
for(int i=0;i<45;i++)
{
arr[i] = i+1;
}
for(int i=0;i<45;i++)
{
a = (int)(Math.random()*45);
b = (int)(Math.random()*45);
c = arr[a];
arr[a] = arr[b];
arr[b] = c;
}
for(int i=0;i<6;i++)
{
System.out.print(arr[i]+ " ");
}
}
}
과제2>ArrayList를 이용하여 로또프로그램을 만들어보자.
1) 기본적으로 6개의 중복되지 않는 숫자를 구한다.
2) 1번을 입력하면 직접입력한 로또 게임이 실행되어
1등, 2등, 3등, 4등, 5등 , 꽝을 출력하도록 한다.
3) 로또번호를 몇번 시도로 맞추는지 count값을 출력한다.
Lotto.java
public static void main(String[] args) throws Exception {
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String select, temp;
int[] arr = new int[45];
int a,b,c, cnt;
for(int i=0;i<45;i++) {
arr[i] = i+1;
}
for(int i=0;i<45;i++) {
a = (int)(Math.random()*45);
b = (int)(Math.random()*45);
c = arr[a];
arr[a] = arr[b];
arr[b] = c;
}
for(int i=0;i<6;i++) {
System.out.println((i+1)+"번째 로또번호 입력하세요 :");
select = br.readLine();
list2.add(select);
}
System.out.println("<<1. 로또확인 | 2. 종료>>\n선택: ");
select = br.readLine();
int so=0;
if (select.equals("1")) {
System.out.print("로또 번호는 ");
for(int i=0;i<6;i++) {
System.out.print(arr[i]+ " ");
list.add(Integer.toString(arr[i]));
}
System.out.println(" 입니다.");
for(int i=0;i<6;i++) {
if (list.contains(list2.get(i))) {
so++;
}//if-end
} // for-end
}
switch(so){
case 6:
System.out.println(so+"개를 맞추셨습니다 1등 입니다");
break;
case 5:
System.out.println(so+"개를 맞추셨습니다 2등 입니다");
break;
case 4:
System.out.println(so+"개를 맞추셨습니다 3등 입니다");
break;
case 3:
System.out.println(so+"개를 맞추셨습니다 4등 입니다");
break;
default:
System.out.println(so+"개를 맞추셨습니다 꽝입니다");
break;
}
}
}
과제3> ArrayList를 이용하여 주소록을 만들어 보자.
주소록 내용: 이름, 주소, 전화번호, 기타 등등
구현할 기능: 추가, 삭제 , 찾기 , 출력
반드시 한명의 데이터를 처리하기 위한 Member 클래스를
만들어 처리하시오.
Member.java
//생성자
class Member {
private String name;
private String address;
private String phone;
private int age;
Member(String name, String address, String phone, int age) {
this.name = name;
this.address = address;
this.phone = phone;
this.age = age;
}
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
String getAddress() {
return address;
}
void setAddress(String address) {
this.address = address;
}
String getPhone() {
return phone;
}
void setPhone(String phone) {
this.phone = phone;
}
int getAge() {
return age;
}
void setAge(int age) {
this.age = age;
}
}
Control.java
import java.util.*;
public class Control {
//ArrayList 대신에 Vector
Vector<Member> v = new Vector<Member>();
Control() {}
void insert(String name, String address, String phone, int age) {
Member member = new Member(name, address, phone, age);
//member 추가
v.addElement(member);
}
void remove(String name) {
int cnt = 0;
//Iterator 대신에 Enumeration
Enumeration<Member> en = v.elements();
while (en.hasMoreElements()) {
Member member = (Member)en.nextElement();
if (member.getName().equals(name)) {
//member 삭제
v.remove(member);
cnt++;
}
}
if ( cnt == 0 ) {
System.out.println(name + "님은 주소록에 없어 지울 수 없습니다.");
}
}
void search(String name) {
int cnt = 0;
Enumeration<Member> en = v.elements();
while (en.hasMoreElements()) {
Member member = (Member)en.nextElement();
if (member.getName().equals(name)) {
System.out.println("이름 : " + member.getName() + " 주소 : " + member.getAddress() + " 전화번호 :
" + member.getPhone() + " 나이 : " + member.getAge());
cnt++;
}
}
if ( cnt == 0 ) {
System.out.println(name + "님은 주소록에 없어 찾을 수 없습니다.");
}
}
void show_print() {
Enumeration<Member> en = v.elements();
while (en.hasMoreElements()) {
Member member = (Member)en.nextElement();
System.out.println("이름 : " + member.getName() + " 주소 : " + member.getAddress() + " 전화번호 : " +
member.getPhone() + " 나이 : " + member.getAge());
}
}
}
MenuControl.java
import java.io.*;
public class MenuControl {
Control ct = new Control();
public static void main(String[] args) {
MenuControl address = new MenuControl();
address.gameStart();
}
//키보드 입력받는 함수
String readKeyboard() {
String input = "";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
input = br.readLine();
} catch (Exception e) {
System.out.println("Keyboard Input Error !! ");
}
return input;
}
int printMenu() {
int input = 0;
do {
System.out.println("< 1.Insert 2.Delete 3.Search 4.All Member View 5.Exit>");
System.out.println("선택하세요...");
try {
input = Integer.parseInt(readKeyboard());
} catch (Exception e) {}
} while ( input != 1 && input != 2 && input != 3 && input != 4 && input != 5);
return input;
}
void select(int input) {
switch (input) {
case 1 :
System.out.println("이름 : ");
String name = readKeyboard();
System.out.println("주소 : ");
String add = readKeyboard();
System.out.println("전화번호 : ");
String phone = readKeyboard();
System.out.println("나이 : ");
int age = Integer.parseInt(readKeyboard());
ct.insert(name, add, phone, age);
break;
case 2 :
System.out.println("삭제할 이름 : ");
String deleteName = readKeyboard();
ct.remove(deleteName);
break;
case 3 :
System.out.println("찾으실 이름 : ");
String searchName = readKeyboard();
ct.search(searchName);
break;
case 4 :
ct.show_print();
break;
case 5 :
System.exit(0);
}
}
//실행함수
void gameStart() {
while (true) {
int input = printMenu();
select(input);
}
}
}
'Study > Java' 카테고리의 다른 글
[java] Input, Output 실습 (0) | 2019.05.15 |
---|---|
[java] Input, Output (0) | 2019.05.15 |
[java] 클래스와 자료구조 (0) | 2019.05.15 |
[java] String, StringBuffer 실습 (0) | 2019.05.15 |
[java] 참조값, instead of, 클래스 (0) | 2019.05.15 |