반응형
package work;
import java.util.Scanner;
public class Work {
/**
숫자를 23을 치면
이십삼이 나오도록
*/
public static void main(String[] args){
/*내가 한것
Scanner s = new Scanner(System.in);
String[] num = {"일","이","삼","사","오","육","칠","팔","구","십"};
String[] ten = {"십","이십","삼십","사십","오십","육십","칠십","팔십","구십"};
System.out.print("1~99 숫자를 입력 : ");
int temp = s.nextInt();
String up = Integer.toString( temp);
int one = Integer.parseInt(up.substring(0,1));
int two =0;
if(Integer.parseInt(up)>10){
two = Integer.parseInt(up.substring(1));
}
for( int i=0; i<10; i++){
if(i == temp){
System.out.println("입력한 수는 : " + num[i]);
}else if( temp > 9){
if(one == i){
System.out.print("입력한 수는 : " + ten[i-1]);
}
if(two == i){
System.out.print( num[i-1]);
}
}
}
s.close();
*/
/*편한방법*/
String[] names = {"일" ,"이" ,"삼" ,"사" ,"오" ,"육" ,"칠" ,"팔" ,"구" };
int num = 382;
//백의자리
int a = num / 100;
//십의자리
int b = ( num - ( a*100))/10;
//일의 자리
int c = ( num - ( a*100 + b*10));
String str = names[ a-1] + "백" + names[ b-1] + "십" + names[ c-1];
System. out.println( str);
// 결과화면__
// 삼백팔십이
}
}
/**인터페이스
* 어떻게 클래스를 만들어 달라고 미리 정의
* 각각의 기능(메소드)에 대한 기능을 어떻게 만들어 달라고 이야기.
* 완전한 추상화
* 추상메소드만 있는것 * 구현이 하나도 없는것 * 스펙으로작동하는것 ex) 제품스펙으로 작동 하는것
* 인터페이스에 있는 메소드 그대로 구현
* 자바에서는 클래스 하나만 상속을 받을수 있다. 추상메소드는 각 기능을 모두 정의 해야한다는 단점이 있다.
* 추상클래스를 이용해서도 가이드를 줄수 있지만 단하나의 클래스밖에 상속을 받지 못하기 때문에 인터페이스가 존재.
* 인터페이스는 여러 기능을 상속 받을수 있다.
* 인터페이스 = 기능의 명세서 어떠한 기능을 구현해야한다는 여러 기능을 정의할때 사용
* 추상클래스 = 기본적인 구현 자식클래스를 바로정의해서 사용할수 있는것들 바로 상속받아서 기능이 변경 되는것
* 기본명세서 = 인터페이스를 상속받아서 구현클래스를 만든다 클래스를 만들기전에 각기능에 대한것을 명시하여 그대로 만들어 지도록
* 인터페이스 특징 : 추상매서드, 상수만 가질수 있다.
* 추상메서드를 정의할 때 abstract를 붙일 필요가 없다.
* 인터페이스를 new를 사용해서 객체 생성할 수 없다.
* 클래스는 한번에 여러개의 인터페이스를 상속받을수 있다.
* Serializable -> 전송가능한 객체 전송안되게 하려면 Serializable을 붙이지 않는다.
* 마크업인터페이스 용도로도 인터페이스를 사용한다.여러개를 동시에 보낼수 있기 때문에
*/
package work;
public interface Mirror {
/*
* 표준을 정의한다
* 스펙을 정의한다.
* 가이드를 정의한다.
*/
//상수와 추상메소드만 정의할 수 있다.
public static final int MAX_AGE = 5;
//아래와 같은 기능들이 있겠내?
void autoClose();
void control();
//public abstract void autoClose();//이와같이 정의 된다고 볼수 있다.
}
package work;
public class DukkyungMirror implements Mirror{
public void autoClose() {
System. out.println( "시동을 끄면 자동으로 접기" );
}
@Override
public void control() {
System. out.println( "거울의 각도 조절하기" );
}
//클래스는 무조건 기능정의~
}
package work;
public class TaejungMirror implements Mirror {
public void autoClose() {
System. out.println( "삐그덕 소리내며 접힌다." );
}
public void control() {
System. out.println( "삐그덕 소리내며 조절된다." );
}
}
package work;
public class CarDemo {
public static void main(String[] args){
DukkyungMirror dm = new DukkyungMirror();
TaejungMirror tm = new TaejungMirror();
//인버젼오브컨트롤 ioc -> 제어역행(여태까지는 내가필요한 객체를 내가 만들었는대 거꾸로 전달받는객체를 거꾸로 올리려면 인터페이스가 껴있어야한다.
//제너시스클래스는 언제든지 클래스 교체가 가능 + 확장한 기능을 갖다 교체하면 끝
Genesis g = new Genesis( tm);
g.powerOff();
g.joystic();
}
//결과화면___________
// 시동끄기
// 삐그덕 소리내며 접힌다.
// 조절하기
// 삐그덕 소리내며 조절된다.
}
package work;
public class Genesis {
Mirror m;
public Genesis(Mirror m){
this. m = m;
}
public void powerOff(){
System. out.println( "시동끄기" );
m.autoClose();
}
public void joystic(){
System. out.println( "조절하기" );
m.control();
}
}
package oop13;
import java.util.Arrays;
public class SortDemo {
public static void main(String[] args){
String[] names = { "김유신" , "강감찬" , "홍길동" , "이순신" };
Arrays. sort( names);
String str = Arrays. toString( names);
System. out.println( str);
}
}
package oop13;
public class Champ implements Comparable<Champ> {
String name;
int exp;
public Champ(){}
public Champ(String name, int exp){
this. name = name;
this. exp = exp;
}
//객체간의 소팅을 하기위해서는 반드시 인터페이스를 통해 compareto가 구현이 되어야 한다.
//그리고 출력을 위해서는 String메소드를 제정의 해줘야 한다.
//compareto 인터페이스를 구현했는지 체크한다. Champ o 중 o의 의미는 다른 아들 Champ
@Override
public int compareTo(Champ o) {
return ( this. exp - o. exp);
}
//alt sheft s 제네레이터 투스트링
@Override
public String toString() {
return "Champ [name=" + name + ", exp=" + exp + "]";
}
}
package oop13;
import java.util.Arrays;
public class SortDemo2 {
public static void main(String[] args){
Champ[] arr = new Champ[5];
arr[0] = new Champ( "천하무적" , 100);
arr[1] = new Champ( "전부비켜" , 200);
arr[2] = new Champ( "다 죽었어" , 50);
arr[3] = new Champ( "웃지마" , 150);
arr[4] = new Champ( "죽을래" , 70);
Arrays. sort( arr);
String text = Arrays. toString( arr);
System. out.println( text);
}
}
// instanceof //연산자는 어떠한 객체인지 트루 펄스로 돌려준다. 유용한 연산자
package oop14;
import oop7.*;
public class InstanceofDemo {
public static void main(String[] args){
Phone p1 = new Iphone();
Phone p2 = new Galaxy();
//어떤 객체가 포함되어있는지 여부를 true false로 나누어 반환한다.
System. out.println( p2 instanceof Phone);
System. out.println( p2 instanceof Phone);
//결과_____
// true
// true
//지금 내가 알고 있는 이객체가 어떤타입의 객체인지 알아낼수 있다.
if( p1 instanceof Iphone){
//p1 IPhone 타임의 객체다.
//if else 인스턴스사용을 하면 현재객체에서 다른객체를 찾아갈수 있다.
//아이폰전용 기능
Iphone p =(Iphone) p2;
} else if( p1 instanceof Galaxy){
//p1이 Galaxy 타입의 객체다.
//지금위치에서 다른객체를 찾아갈수 있다.
//갤럭시폰의 전용 기능
} else {
//짝퉁이다.
}
}
}
package oop14;
import oop7.*;
public class InstanceofDemo {
public static void main(String[] args){
Phone p1 = new Iphone();
Phone p2 = new Galaxy();
//어떤 객체가 포함되어있는지 여부를 true false로 나누어 반환한다.
System. out. println( p1 instanceof Iphone);
System. out. println( p1 instanceof Galaxy);
//결과_____
// true
// false
//지금 내가 알고 있는 이객체가 어떤타입의 객체인지 알아낼수 있다.
if( p1 instanceof Iphone){
//p1 IPhone 타임의 객체다.
//if else 인스턴스사용을 하면 현재객체에서 다른객체를 찾아갈수 있다.
//아이폰전용 기능
Iphone i = (Iphone) p1;
i.facetime();
} else if( p1 instanceof Galaxy){
//p1이 Galaxy 타입의 객체다.
//지금위치에서 다른객체를 찾아갈수 있다.
//갤럭시폰의 전용 기능
Galaxy g = (Galaxy) p1;
g.dmb();
} else {
//짝퉁이다.
System. out.println( "짝퉁" );
}
}
}
package oop14;
import oop7.*;
public class InstanceofDemo2 {
public static void testAllPhone(Phone p){
p.call();
p.sms();
if( p instanceof Iphone){ //p에 Iphone 이 담긴 경우
((Iphone) p).facetime();
} else if( p instanceof Galaxy){ //p에 Galaxy가 담긴 경우
((Galaxy) p).dmb();
}
}
public static void main(String[] args){
Iphone p1 = new Iphone();
Galaxy p2 = new Galaxy();
testAllPhone( p1);
}
/*결과____________
* 전화걸기
문자
영상통화를 합니다.
*/
}
객체를만들면 super와 this가 생성된다. super를 쓰는것은 많이없다.
부모의 참조값을 갖고있는게 super 부모의 있는 메소드를 호출한다.
package work;
import java.util.Random;
public class Work2 {
/**
2. 난수를 만들어서 로또 번호 뽑기(겹치지 않게)
로또번호 6개 while로
3. 난수를 만들어서 야구게임 구현하기
- 난수를 사용해서 숫자3개를 뽑기 --> 배열에 담기[1,2,3]
- 혹은 그냥 1,2,7 입력한 값을 배열에담기
- 숫자를 입력하세요 1,2,3 스캐너 -> 1번 입력시 배열1, 배열2, 배열3에 있는 지 확인
- 25 출력되야한다.
숫자3개 담을 배열을 각각 2개 만들기
하나는 원본, 또 하나는 입력받은거 담을 용도
스트라이크와 볼 갯수 저장할 변수 각각 만들기
*/
//6개 랜덤함수로 6개 숫자 생성
//숫자가 겹치지 않으려면..? 출력된 번호와 랜덤에 나온값이 같다면 다시 랜덤으로 올라가도록 처리
public static void main(String[] args){
Random r = new Random();
int[] temp = new int[6];
int i = 0;
while( i< temp. length){
temp[ i] = r.nextInt(50)+1;
if( temp[ i] == temp[ i-1]){
}
System. out.print( temp[ i] + " ");
i++;
}
}
}
package oop15;
public class Employee {
private int no; //사원번호
private String name; //직원명
public Employee (){
System. out.println( "Employee() 실행" );
}
public Employee( int no, String name){
this. no = no;
this. name = name;
System. out.println( "Employee(int, String) 실행" );
}
}
package oop15;
public class Salesman extends Employee {
private int record; //영업실적
//목표 부모 클래스의 변수에 접근하고싶다. 벗 private 더까다로움 어떻게 접근?
//부모 클래스에 잘하면 변수를 전달 받을만한 메소드가 있을법 하다.
public Salesman (){
super(); //모든생성자에 기본생성자가 존재함
}
//private 해놨기 때문에 안보이는것 뿐이지 실제론 상속 받았기 때문에 존재한다.
//이럴경우 부모의 있는 생성자를 이용해서 접근
public Salesman( int no, String name, int record){
//규칙 부모가 먼저 생성되었기 때문에 부모 다음 자식 요소 선언
super( no, name);
this. record = record;
}
}
package oop15;
public class SuperDemo {
public static void main (String[] args ){
Salesman s1 = new Salesman(); //생성자 메소드 실행됨
Salesman s2 = new Salesman(1, "길동" ,100000);
}
}
package formatter;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.Date;
public class NumberFormatDemo {
public static void main(String[] args){
int money = 100000000;
DecimalFormat df = new DecimalFormat( "##,###");
String str = df.format( money);
System. out.println( str);
double pi = 3.141592;
DecimalFormat df2 = new DecimalFormat( "#.####");
System. out.println( df2.format( pi));
double rate = 0.0300;
DecimalFormat df3 = new DecimalFormat( "0.0000");
System. out.println( df2.format( rate));
Date now = new Date(); //현재 날짜/시간정보를 가진 객체 생성
System. out.println( now);
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM- dd");
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM- dd EEEE");
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM- dd EEEE a");
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM- dd EEEE a hh:mm:ss");
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy년 MM월dd일 EEEE a hh시:mm분:ss초"); //패턴 문자외엔 그대로 찍힌다.
String temp = sdf.format( now);
System. out.println( temp);
//결과화면__________________________
// 100,000,000
// 3.1416
// 0.03
// Thu Apr 16 17:47:06 KST 2015
// 2015년 04월16일 목요일 오후 05시:47분:06초
}
}
1. 클래스를 정의하세요
- 상품번호(no), 상품명(name), 가격(price)을 변수로 가지는 클래스(Item 클래스)를 정의하세요.
- 기본 생성자를 정의하세요
- 상품번호, 상품명, 가격을 전달받아서 생성된 객체의 변수를 초기화하는 생성자를 정ㅇ의하세요.
- 상품정보(상품번호, 상품명, 가격)를 화면에 표시하는 display() 메소드를 정의하세요.
2. ItemDemo를 정의하세요.
- 상품번호, 상품명, 가격을 키보드로 입력받으세요.
- 위에서 정의한 Item객체를 생성해서 입력받은 값을 담으세요, 값을 담을 때는 생성자를 활용하세요
- 생성된 객체의 display()를실행시켜서 입력된 값을 화면에 표시하세요.
- 상품번호, 상품명, 가격순으로 주문정보를 입력하세요.
입력 예) 123,iphone,600000
134, ipad,800000
156,galaxy,79000
- Scanner를 사용해서 order.txt 파일을 읽어옵니다.
- 주문상품정보를 저장하기 위해 Item을 여러개 담을 수 있는 배열을 정의하시고, 파일에서 얻어온 값을 배열에 저장하세요.
- 배열에 저장된 정보를 아래와 같이 표시하세요
========================== 주문내역 ===========================
상품번호 상품명 상품가격
123 iphone 600,000원
134 ipad 800,000원
156 galaxy 790,000원
===============================================================
- 상품번호(no), 상품명(name), 가격(price)을 변수로 가지는 클래스(Item 클래스)를 정의하세요.
- 기본 생성자를 정의하세요
- 상품번호, 상품명, 가격을 전달받아서 생성된 객체의 변수를 초기화하는 생성자를 정ㅇ의하세요.
- 상품정보(상품번호, 상품명, 가격)를 화면에 표시하는 display() 메소드를 정의하세요.
package goods;
public class Item {
// 1. 클래스를 정의하세요
// - 상품번호(no), 상품명(name), 가격(price)을 변수로 가지는 클래스(Item 클래스)를 정의하세요.
// - 기본 생성자를 정의하세요
// - 상품번호, 상품명, 가격을 전달받아서 생성된 객체의 변수를 초기화하는 생성자를 정의하세요.
// - 상품정보(상품번호, 상품명, 가격)를 화면에 표시하는 display() 메소드를 정의하세요.
int no;
String name;
int price;
public Item(){}
public Item( int no, String name, int price){
this. no = no;
this. name = name;
this. price = price;
}
public void disPlay(){
System. out.println( "번호 : " + no + "\t이름 : " + name + "\t가격 : " + price );
}
}
package goods;
public class ItemMain {
public static void main(String[] args){
Item i = new Item(1, "아이유 시디" , 54000);
i.disPlay();
}
}
- 상품번호, 상품명, 가격을 키보드로 입력받으세요.
- 위에서 정의한 Item객체를 생성해서 입력받은 값을 담으세요, 값을 담을 때는 생성자를 활용하세요
- 생성된 객체의 display()를실행시켜서 입력된 값을 화면에 표시하세요.
package goods;
import java.util.Scanner;
public class ItemDemo {
public static void main(String[] args){
Scanner s = new Scanner(System. in);
System. out.print( "상품번호:" );
int num = s.nextInt();
System. out.print( "상품명:" );
String name = s.next();
System. out.print( "가격:" );
int price = s.nextInt();
Item i = new Item( num, name, price);
i.disPlay();
/*결과화면____________________
* 상품번호:1
상품명:CD
가격:54000
번호 : 1 이름 : CD 가격 : 54000
*/
}
}
3. order.txt를 작성하세요.- 상품번호, 상품명, 가격순으로 주문정보를 입력하세요.
입력 예) 123,iphone,600000
134, ipad,800000
156,galaxy,79000
- Scanner를 사용해서 order.txt 파일을 읽어옵니다.
- 주문상품정보를 저장하기 위해 Item을 여러개 담을 수 있는 배열을 정의하시고, 파일에서 얻어온 값을 배열에 저장하세요.
- 배열에 저장된 정보를 아래와 같이 표시하세요
========================== 주문내역 ===========================
상품번호 상품명 상품가격
123 iphone 600,000원
134 ipad 800,000원
156 galaxy 790,000원
===============================================================
txt/order.txt 파일 생성
123,iphone,600000
134,ipad,800000
156,galaxy,79000
package goods;
import java.util.Scanner;
import java.io.File;
public class Order {
// order.txt를 작성하세요.
// - 상품번호, 상품명, 가격순으로 주문정보를 입력하세요.
// 123, iphone,600000
// 134, ipad,800000
// 156,galaxy,79000
// - Scanner를 사용해서 order.txt 파일을 읽어옵니다.
// - 주문상품정보를 저장하기 위해 Item을 여러개 담을 수 있는 배열을 정의하시고, 파일에서 얻어온 값을 배열에 저장하세요.
// - 배열에 저장된 정보를 아래와 같이 표시하세요
// ========================== 주문내역 ===========================
// 상품번호 상품명 상품가격
// 123 iphone 600,000원
// 134 ipad 800,000원
// 156 galaxy 790,000원
// ===============================================================
public static void main(String[] args) throws Exception{
Scanner s = new Scanner( new File( "src/txt/order.txt" ));
String[] text = new String[3];
Item item = new Item();
System. out.println( "================== 주문내역 ===================");
for( int i=0; i<3; i++){
text[ i] = s.nextLine();
String[] arr = text[ i].split( ",");
for( int j=0; j< arr. length; j++){
item = new Item(Integer.parseInt( arr[0]), arr[1],Integer. parseInt(arr [2]));
}
item.disPlay();
}
System. out.println( "=============================================" );
}
//결과화면________________________________________
// ================== 주문내역 ===================
// 번호 : 123 이름 : iphone 가격 : 600000원
// 번호 : 134 이름 : ipad 가격 : 800000원
// 번호 : 156 이름 : galaxy 가격 : 79000원
// =============================================
}
package goods;
import java.util.Random;
public class NumberGenerator {
private int max;
private int[] numbers;
public NumberGenerator( int max, int size) {
this. max = max;
this. numbers = new int[ size];
}
public void generate() {
Random ran = new Random();
int index = 0;
while( true) {
int num = ran.nextInt( max) + 1;
boolean exist = checkExist( num);
if (! exist) {
numbers[ index] = num;
index++;
}
if ( index == numbers. length) {
break;
}
}
}
public int[] getNumbers() {
return numbers;
}
private boolean checkExist( int num) {
boolean exist = false;
for ( int i=0; i< numbers. length; i++) {
if ( num == numbers[ i]) {
exist = true;
}
}
return exist;
}
}
package goods;
import java.util.Random;
public class NumberGenerator {
private int max;
private int[] numbers;
public NumberGenerator( int max, int size) {
this. max = max;
this. numbers = new int[ size];
}
public void generate() {
Random ran = new Random();
int index = 0;
while( true) {
int num = ran.nextInt( max) + 1;
boolean exist = checkExist( num);
if (! exist) {
numbers[ index] = num;
index++;
}
if ( index == numbers. length) {
break;
}
}
}
public int[] getNumbers() {
return numbers;
}
private boolean checkExist( int num) {
boolean exist = false;
for ( int i=0; i< numbers. length; i++) {
if ( num == numbers[ i]) {
exist = true;
}
}
return exist;
}
}
package goods;
import java.util.Arrays;
public class Lotto {
public static void main(String[] args){
/**
난수를 만들어서 로또 번호 뽑기(겹치지 않게)
로또번호 6개 while로
**/
NumberGenerator generator = new NumberGenerator(45, 6);
generator.generate();
int[] lotto = generator.getNumbers();
System. out.println(Arrays. toString( lotto));
}
}
베이스볼 야구게임
package goods;
import java.util.Scanner;
import java.util.Arrays;
public class BaseBall {
public static void main(String[] args){
/*NumberGenerator generator = new NumberGenerator(9, 3);
generator.generate();
int[] numbers = generator.getNumbers();*/
int[] numbers = {1,6,7};
Scanner sc = new Scanner(System. in);
System. out.print( "숫자를 입력해:" );
String text = sc.next();
String[] arr = text.split( ",");
int[] inputNumbers = {Integer. parseInt( arr[0])
, Integer.parseInt( arr[1])
, Integer.parseInt( arr[2])};
int strikeCount = 0;
int ballCount = 0;
for ( int i=0; i<3; i++) {
int inputNumber = inputNumbers[ i];
for ( int j=0; j<3; j++) {
int number = numbers[ j];
if ( number == inputNumber) {
if ( i == j) {
strikeCount++;
} else {
ballCount++;
}
}
}
}
System. out.println( "숨겨진 숫자: " + Arrays.toString( numbers));
System. out.println( "입력된 숫자: " + Arrays.toString( inputNumbers));
System. out.println( strikeCount+ "S" + ballCount+ "B");
}
}
반응형