2013년 1월 22일 화요일

[Java] 간단한 계산기(Calculator)


package kosta.calculator;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

public class Calculator extends Frame implements ActionListener {
Panel p;
Panel p2;
Label la;
Button[] b;
Button clear;
ArrayList<Integer> arr;
ArrayList<String> srr;
int result;
int count = 1;

Calculator() {
arr = new ArrayList<Integer>();
srr = new ArrayList<String>();
p = new Panel();
p2 = new Panel();
la = new Label("");
b = new Button[16];
clear = new Button("Clear");
clear.addActionListener(this);

p2.setLayout(new BorderLayout());
p2.add(la, BorderLayout.CENTER);
p2.add(clear, BorderLayout.EAST);
p.setLayout(new GridLayout(4, 4));
String button[] = { "7", "8", "9", "/", "4", "5", "6", "*", "1", "2",
"3", "-", "<-", "0", "=", "+" };
for (int i = 0; i < button.length; i++) {
b[i] = new Button(button[i]);
b[i].addActionListener(this);
p.add(b[i]);
}
add(p2, BorderLayout.NORTH);
add(p, BorderLayout.CENTER);

setSize(300, 300);
setLocation(600, 300);
setVisible(true);

WindowListener wind = new WindowAdapter() {

@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}

};

addWindowListener(wind);
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Button in = (Button) e.getSource();

if(in == clear){
la.setText("");
for(int i=0; i<arr.size(); i++){
arr.remove(0);
}
for(int i=0; i<srr.size(); i++){
srr.remove(0);
}
}

for (int i = 0; i < b.length; i++) {
if (in == b[i]) {
if (b[i].getLabel() == "<-") {
String str2 = la.getText();
if (str2 == null)
break;
String temp = str2.substring(0, str2.length() - 1);
la.setText(temp);
break;
} else if ((b[i].getLabel() == "*") || (b[i].getLabel() == "/")
|| (b[i].getLabel() == "+") || (b[i].getLabel() == "-")) {
arr.add(Integer.parseInt(la.getText()));
srr.add(b[i].getLabel());
la.setText("");
break;
} else if (b[i].getLabel() == "=") {
arr.add(Integer.parseInt(la.getText()));
while(srr.size()!=0){
for(int j=0; j<srr.size(); j++){
if(srr.get(j) == "*" || srr.get(j) == "/"){
if(srr.get(j) == "*"){
result = arr.get(j) * arr.get(j+1);
arr.remove(j);
arr.remove(j);
arr.add(j, result);
srr.remove(j);
break;
}else if(srr.get(j) == "/" || arr.get(j+1) != 0){
result = arr.get(j) / arr.get(j+1);
arr.remove(j);
arr.remove(j);
arr.add(j, result);
srr.remove(j);
break;
}
}
}
for(int j=0; j<srr.size(); j++){
if(srr.get(j) == "+" || srr.get(j) == "-"){
if(srr.get(j) == "+"){
result = arr.get(j) + arr.get(j+1);
arr.remove(j);
arr.remove(j);
arr.add(j, result);
srr.remove(j);
break;
}else if(srr.get(j) == "-"){
result = arr.get(j) - arr.get(j+1);
arr.remove(j);
arr.remove(j);
arr.add(j, result);
srr.remove(j);
break;
}
}
}
}
la.setText(result + "");
break;
}
String str = la.getText() + b[i].getLabel();
la.setText(str);
}
}

}

public static void main(String[] args) {
Calculator cal = new Calculator();
}

}

2013년 1월 18일 금요일

[Java] Student's Grade Management


public class Manager {
//ArrayList를 만들자
ArrayList<Student> list = new ArrayList<Student>();
Scanner sc = new Scanner(System.in);
int choice;

Manager(){
}

void disp(){
System.out.println("-------성적 관리 프로그램--------");
System.out.println("1.입력  2.저장  3.불러오기 4.정렬 5.끝!");
}

void choice()throws Exception{
while(true){
disp();
try{choice = sc.nextInt();
sc.nextLine();
}catch(Exception e){
System.out.println("숫자만 입력하시오!");
return;
}
switch(choice){
case 1:
Input();
break;
case 2:
save();
break;
case 3:
load();
break;
case 4:
sort();
break;
case 5:
sort();
break;
case 6:
return;
}
}
}

void Input()throws Exception{
System.out.print("이름 : ");
String name = sc.nextLine();
System.out.print("국어 : ");
int kor = Integer.parseInt(sc.nextLine());
System.out.print("영어 : ");
int eng = Integer.parseInt(sc.nextLine());
System.out.print("수학 : ");
int math = Integer.parseInt(sc.nextLine());

list.add(new Student(name, kor, eng, math));
}

void save()throws Exception{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("kyd.ser"));
oos.writeObject(list);//파일에 출력스트림을 연결한 뒤 오브젝트 출력스트림을 연결
oos.close();
//list = null;
System.out.println("파일에 저장되었습니다.");
}

void load()throws Exception{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("kyd.ser"));
list = (ArrayList<Student>)ois.readObject();//파일에 입력스트림을 연결한 뒤 오브젝트 입력스트림으로 연결
ois.close();

for(int i=0; i<list.size(); i++){
System.out.println(((Student)list.get(i)));
}
System.out.println("파일을 불러왔습니다.");
}

void sort()throws Exception{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("kyd.ser"));
list = (ArrayList<Student>)ois.readObject();
ois.close();

Comparator<Student> cp = new Comparator<Student>() {

@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
int total1 = o1.getEng() + o1.getKor() + o1.getMath();
int total2 = o2.getEng() + o2.getKor() + o2.getMath();
if(total1 < total2){
return 1;
}else if(total1 > total2){
return -1;
}
return 0;
}
};
Collections.sort(list, cp);
for(int i=0; i<list.size(); i++){
System.out.println(i+1 + "등 " + ((Student)list.get(i)));
}

}
}

[Java] Serializable


public class Serial_Exam {
Member m;

public void write()throws Exception{
//개채 직렬화
m = new Member("홍길동", "1234", 20);
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Objectoutput.ser"));
out.writeObject(m);//파일에 바이트 파일스트림을 연결하고 그 위에 오브젝트스트림으로 연결!
out.close();
}

public void read()throws Exception{
//개체 역직렬화
ObjectInputStream in = new ObjectInputStream(new FileInputStream("Objectoutput.ser"));//
m = (Member)in.readObject();
in.close();
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Serial_Exam se = new Serial_Exam();

se.write();
se.m = null;
se.read();
System.out.println("이름 : " + se.m.name);
System.out.println("비밀번호 : " + se.m.pass);
System.out.println("나이 : " + se.m.age);
}

}

[Java] PhoneManager


public class Manage {
Scanner sc = new Scanner(System.in);
HashMap<String, ArrayList<PhoneInfo>> map = new HashMap<String, ArrayList<PhoneInfo>>();
int choice;

Manage(){
}

void disp(){
System.out.println("-------전화번호부 관리 프로그램--------");
System.out.println("1.입력  2.출력  3.수정 4.삭제 5.정렬 6.저장 7.불러오기");
}

void choice()throws Exception{
while(true){
disp();
try{choice = sc.nextInt();
sc.nextLine();
}catch(Exception e){
System.out.println("숫자만 입력하시오!");
return;
}
switch(choice){
case 1:
Input();
break;
case 2:
show();
break;
case 3:
modify();
break;
case 4:
delete();
break;
case 5:
sort();
break;
case 6:
write();
break;
case 7:
read();
break;
default:
return;
}
}
}

void addGroup(String group){
if(!map.containsKey(group)){
map.put(group, new ArrayList<PhoneInfo>());
}
}

void Input(){
System.out.print("그룹 입력 : ");
String group = sc.nextLine();
System.out.print("이름 입력 : ");
String name = sc.nextLine();
System.out.print("전화 번호 입력 : ");
String phone = sc.nextLine();
System.out.print("생일 입력 : ");
String birth = sc.nextLine();

addGroup(group);
ArrayList<PhoneInfo> list = map.get(group);
   list.add(new PhoneInfo(name, phone, birth));
   System.out.println();
}

void show(){
Set set = map.entrySet();
Iterator iter = set.iterator();

while(iter.hasNext()){
Map.Entry e = (Map.Entry)iter.next();
System.out.println(e.getKey() + "[" + ((ArrayList)e.getValue()).size() + "]");
Iterator iterSub = ((ArrayList)e.getValue()).iterator();
while(iterSub.hasNext()){
PhoneInfo pi = (PhoneInfo)(iterSub.next());
pi.showInfo();
}
System.out.println();
}
System.out.println();
}

void modify(){
System.out.print("전화번호부 수정할 사람의 이름을 입력해 주십시오");
String name = sc.nextLine();

Set set = map.entrySet();
Iterator iter = set.iterator();

while(iter.hasNext()){
Map.Entry e = (Map.Entry)iter.next();
Iterator iterSub = ((ArrayList)e.getValue()).iterator();

while(iterSub.hasNext()){
PhoneInfo pi = (PhoneInfo)(iterSub.next());
if(pi.name.equals(name)){
System.out.print("수정할 전화번호를 입력하세요");
String phone = sc.nextLine();
pi.phoneNum = phone;
}
}
}
System.out.println();
}

void delete(){
System.out.print("삭제할 사람의 이름을 입력해 주십시오.");
String name = sc.nextLine();

Set set = map.entrySet();
Iterator iter = set.iterator();

while(iter.hasNext()){
Map.Entry e = (Map.Entry)iter.next();
Iterator iterSub = ((ArrayList)e.getValue()).iterator();

while(iterSub.hasNext()){
PhoneInfo pi = (PhoneInfo)(iterSub.next());
if(pi.name.equals(name)){
iterSub.remove();
}
}
}
}

void sort(){
Comparator<PhoneInfo> cp = new Comparator<PhoneInfo>() {

@Override
public int compare(PhoneInfo o1, PhoneInfo o2) {
// TODO Auto-generated method stub
if(o1.name.compareTo(o2.name)<0)
return -1;
else if(o1.name.compareTo(o2.name)>0)
return 1;
return 0;
}
};

Set set = map.entrySet();
Iterator iter = set.iterator();
System.out.print("정렬할 그룹를 입력하세요");
String group = sc.nextLine();

while(iter.hasNext()){
Map.Entry e = (Map.Entry)iter.next();

if(e.getKey().equals(group))
Collections.sort(((ArrayList)e.getValue()), cp);

}
System.out.println();
}

private void write() throws Exception {
// TODO Auto-generated method stub
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("PhonInfo.ser"));
oos.writeObject(map);
oos.close();
//map = null;
System.out.println("저장되었습니다.");
}

private void read() throws Exception {
// TODO Auto-generated method stub
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("PhonInfo.ser"));
map = (HashMap<String, ArrayList<PhoneInfo>>)ois.readObject();
ois.close();
System.out.println("불러오기를 완료했습니다.");
}

}

2013년 1월 16일 수요일

[Java] 달력출력(show Calender)


public class Calendar_Mission {

public static void main(String[] args) {

GregorianCalendar gc = new GregorianCalendar();

gc.set(2013, 2, 1);//you can choose the day you want
int sWeek = gc.get(Calendar.DAY_OF_WEEK);
System.out.println("일\t월\t화\t수\t목\t금\t토");
for(int i=1; i<sWeek; i++){
System.out.print("\t");
}
for(int i=1; i<=gc.getActualMaximum(Calendar.DATE); i++){
if((sWeek+i-2)%7 == 0)
System.out.println();
System.out.print(i+"\t");
}
}

}

[Java] 카드섞기(Shuffle some card)


public static void main(String[] args) {
// TODO Auto-generated method stub
//카드게임
//카드 10장 준비
String card[] = {"하트1","하트2","하트3","하트4","하트5","하트6","하트7","하트8","하트9","하트10"};//Array for some card

//카드 섞기(난수 2개로 배열요소끼리 교환해주기X50)
for(int i=0; i<50; i++){//pick two card from ramdon index of Array, and swap it.
int num1 = (int)(Math.random()*10);
int num2 = (int)(Math.random()*10);
String temp = card[num1];
card[num1] = card[num2];
card[num2] = temp;
}

for(int i=0; i<10; i++){
System.out.print(card[i]+", ");
}
}

하나에 배열에서 각각의 요소를 어떻게 섞는지 잘 알아두라고 여기에 올려둠

[Java] 야구게임(Baseball Gaem)


public class BaseballGame {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Manager m = new Manager();
Scanner sc = new Scanner(System.in);
int arr[] = new int[3];
int strike = 0;
int ball = 0;
int num = 1;

System.out.println("야구게임");
do{
System.out.println(num + "번째 시도");//number of trying
System.out.println("숫자를 3개 입력하세요");//choose 3 number
for(int i=0; i<3; i++){
System.out.print(i+1+"번째 숫자: ");//put your number
arr[i] = sc.nextInt();
sc.nextLine();
}

strike = m.countStrike(arr);
ball = m.countBall(arr);

System.out.println(strike + "Strike, " + ball + "ball");
num++;
System.out.println();
}while(strike<3);
}

}

---------------------------------------------------------------------------------


public class Manager {
int arr[] = new int[3];

public Manager(){
while(true){
int num1 = (int)(Math.random()*10);
int num2 = (int)(Math.random()*10);
int num3 = (int)(Math.random()*10);
if(num1!=num2 && num3!=num1 && num3!=num2){
arr[0] = num1;
arr[1] = num2;
arr[2] = num3;
break;
}
}
}

public int countStrike(int[] arr) {
// TODO Auto-generated method stub
int strike=0;
for(int i=0; i<this.arr.length; i++){
if(this.arr[i] == arr[i]){
strike++;
}
}
return strike;
}

public int countBall(int[] arr) {
// TODO Auto-generated method stub
int ball=0;
for(int i=0; i<this.arr.length; i++){
for(int j=0; j<arr.length; j++){
if(i==j)
continue;
else{
if(this.arr[i]==arr[j]){
ball++;
}
}
}
}
return ball;
}

/*public int countBall(int[] arr){
* int ball = 0;
* 
* for(int i=0; i<3; i++){
* if(this.arr[i] == arr[(i+1)%3]){
* ball++;
* }else if(this.arr[i] == arr[(i+2)%3]){
* ball++;
* }
* }
* 
* return ball;
* }
*///이코드 유용하다 잘 봐놓자

}