상속(예제)

개발/코딩 2013. 10. 1. 20:17

class Person{
 int age;  //default 접근자 생략
 public String name;
 protected int height;
 private int weight;
 public void setWeight(int weight){ // 5.  4번에서 63값을 받는다
  this.weight=weight;  // 6.  63값을 받아서 private weight에 반환해준다 
  System.out.println(weight);  //weight 출력하려면 여기밖에 없음.
 }
 public int getWeight(){
  return weight;
 }
}
public class 연습 extends Person{
 void set(){   // 3.  default 접근자 생략
  age=26;
  name="김창훈";
  height=169;
  setWeight(63);    // 4.  setWeight에 63 인자값을 넘겨준다
  System.out.println(age);     //age,name,height는 슈퍼클래스에서도 출력 가능
  System.out.println(name);
  System.out.println(height);
 }
 public static void main(String[] args){
  연습 s =new 연습(); //  1. 값변수(?) 생성   //연습은 heap에 저장이 되고
  s.set();    //  2.  s 는 stack 에 저장되고 heap을 가르킨다.
  int i=s.getWeight(); //그냥 get함수 받아본거야.
  System.out.println(i);
 }
}

=======출력=====

63              weight 값
26              age
김창훈        name
169            height
63             getWeight

get,set이용해서 성적입력.

개발/코딩 2013. 10. 1. 17:58

==========main 함수========================================================

package oop.capsule;
import java.util.Scanner;

public class Program2{
 public static void main(String[] args) {
  Record record = new Record();
  int total = 0;
  float avg = 0;
  int menu = 0;
  Scanner a = new Scanner(System.in);
  Scanner in = new Scanner(System.in);
  뿅:while (true) {
    
   switch (RecordView.inputMenu()) {
   
   case 1:
    RecordView.inputRecord(record);
    break;

   case 2:
    RecordView.printRecord(record);
    break;
    
   case 3:
    System.out.println("종료됩니다");
    break 뿅;
    
   default:
    System.out.println("입력이 잘못됐습니다. 다시 입력하세요");
   }
  }
 }
}

=====main을 제외한 나머지 함수================================================================

package oop.capsule;
import java.util.Scanner;


public class RecordView {

 public static int inputMenu(){
  int menu;
  Scanner in = new Scanner(System.in);
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           메인 메뉴             │");
  System.out.println("└─────────────────────────────┘");
  System.out.println("1.성적 입력");
  System.out.println("2.성적 출력");
  System.out.println("3.종료");
  System.out.print("선택>");
  menu = in.nextInt();
  return menu;
 }

 public static void inputRecord(Record record){
  int kor,eng,math;
  Scanner a = new Scanner(System.in);
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           성적 입력             │");
  System.out.println("└─────────────────────────────┘");

  do {
   System.out.print("국어:");
   kor = a.nextInt();

   if (kor < 0 || kor > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (kor < 0 || kor > 100);

  do {
   System.out.print("영어:");
   eng = a.nextInt();

   if (eng < 0 || eng > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (eng < 0 || eng > 100);

  do {
   System.out.print("수학:");
   math = a.nextInt();

   if (math < 0 || math > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (math < 0 ||math > 100);
  /*  record.kor=kor;
   record.eng=eng;
   record.math=math;  */
  Record.setKor(record, kor);   //Record 함수에 kor값 setting
  Record.setEng(record, eng);
  Record.setMath(record, math);
 }
 
 public static void printRecord(Record record){
  int total = Record.total(record); //다른클래스의 이름을 변경(kor=>kor1)하면 여기에서만 오류 날 수 있도록
  float avg = total / 3.0f;    
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           성적 출력              │");
  System.out.println("├────┬────┬────┬────┬────┬────┤");
  System.out.println("│ 번호 │ 국어 │ 영어 │ 수학 │ 총점 │ 평균 │");
  for (int i = 0; i < 3; i++) {
   System.out.println("├────┼────┼────┼────┼────┼────┤");
   System.out.printf("│%3d │%3d │%3d │%3d │%3d │%6.2f │\n",i + 1,
 Record.getKor(record), Record.getEng(record),Record.getMath(record), total, avg);
  }       //Racord 클래스에 과목을 얻어주라는 뜻.get
  System.out.println("└────┴────┴────┴────┴────┴────┘"); 
 }
}
 

===============Record class (get,set 을 이용하여)==========================

(코드의 캡슐화) -> 궁극적인 목적은 데이터에 대한 보호,외부접근 제한등을 위한것.

    접근을 금지하는것이 "정보 은닉화"

package oop.capsule;

public class Record { // 함수안에 선언한게 아니라서 값을 넣는 공간아님.
      // (함수안에있는 것만 선언한것. class에는 정의한것.)
 int kor;
 int eng;
 int math;
 
  /* 데이터가 중첩될수도, 안될수도 있지만 구조변경에서 자유로울 수 있어야한다. 따라서 구조를 변경하기 위해서 함수를 이용함.
  * (구조를 변경했을 때 문제가 되는것은 다 Record 클래스 안에 있음) */

 public static int total(Record record)
 // 데이터변경을 자유롭게하기위해 total함수를 만들어서 사용.
 {
  return (record.kor + record.eng + record.math);
 }

 public static int getKor(Record record) {
  return record.kor;
 }

 public static void setKor(Record record, int kor) {
  record.kor = kor;
 }

 public static int getEng(Record record) {
  return record.eng;
 }

 public static void setEng(Record record, int eng) {
  record.eng = eng;
 }

 public static int getMath(Record record) {
  return record.math;
 }

 public static void setMath(Record record, int math) {
  record.math = math;
 }
}

입력 단어와 일치하면 그 라인에 있는 문자 출력하기(자막)

개발/코딩 2013. 9. 30. 15:50

==해당 입력 단어 라인을 출력==

package file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;

public class Program2 {
 public static void main(String[] args) throws IOException{
  FileInputStream fin = new FileInputStream // 파일 경로
    ("res/a.smi");  //상대적인 경로
   
    Scanner fscan = new Scanner(fin);

    System.out.println("어떤 단어가 들어간 문장을 원하니?");
    Scanner sc=new Scanner(System.in); //단어 입력 스케너
    String word=sc.next(); //문자 스케너
    
   for(int i=0;fscan.hasNext();i++) // hasNext 다음에 읽어올 줄이 있으면 true해서 읽어오고 없으면 false
   {
    String line = fscan.nextLine();
    
    if (line.indexOf(word) != -1){  //만약 입력단어와 일치하다면 출력 여기서,-1은 맞는 단어가 없단뜻
     System.out.println(line);
    }
   
   }
  
   fscan.close();
   fin.close();
  }
 }

==해당 입력 단어 라인에 []추가 해서출력==

package file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;

public class Program2 {
 public static void main(String[] args) throws IOException{
  FileInputStream fin = new FileInputStream // 파일 경로
    ("res/a.smi");  //상대적인 경로
   
    Scanner fscan = new Scanner(fin);

    System.out.println("어떤 단어가 들어간 문장을 원하니?");
    Scanner sc=new Scanner(System.in); //단어 입력 스케너
    String word=sc.next(); //문자 스케너
    
   for(int i=0;fscan.hasNext();i++) // hasNext 다음에 읽어올 줄이 있으면 true해서 읽어오고 없으면 false
   {
    String line = fscan.nextLine();
    
    if (line.indexOf(word) != -1){  //만약 입력단어와 일치하다면 출력 여기서,-1은 맞는 단어가 없단뜻
     line=line.replace(word,"["+word+"]"); //조작,입력 단어에 [ ] 추가
     System.out.println(line); //해당 라인 출력
    }
   
   }
  
   fscan.close();
   fin.close();
  }
 }

 

'개발 > 코딩' 카테고리의 다른 글

상속(예제)  (0) 2013.10.01
get,set이용해서 성적입력.  (0) 2013.10.01
무슨 파일 읽어오고 수정하고 그런거..  (0) 2013.09.27
성적입력(최종)  (0) 2013.09.26
성적관리->> 함수 쓰고, 클래스 써서  (0) 2013.09.25

무슨 파일 읽어오고 수정하고 그런거..

개발/코딩 2013. 9. 27. 17:57

package file;

import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

public class Program {
 public static void main(String[] args) throws IOException {
  FileInputStream fin = new FileInputStream // 파일 경로??
  ("D:\\java\\workspace\\javaprj\\src\\calendar\\Program.java");
  // 백슬러시 두번씩 해줘야 한다.
  Scanner fscan = new Scanner(fin);  //fin 파일을 읽어온다(?)

  FileOutputStream fout = new FileOutputStream("d:\\date.txt"); // d드라이브에 텍스트 파일 생성
                  
  PrintStream out = new PrintStream(fout); // 출력 스트림
  
  for(int i=0;fscan.hasNext();i++)// hasNext 다음에 읽어올 줄이 있으면 true해서 읽어오고 없으면 false
  {
   //읽기
   String line = fscan.nextLine(); // input 스트림으로 읽어와서
   //조작
   line=line.replace("int", "정수"); //int 를 정수로 바까쥼
   //아웃
   out.println(i++ +" "+line); // 라인 읽어온것을 보여준다, 각 라인에 숫자
  }
  out.close(); // 문을 닫아줘야한다. 안하면 다른곳에서 실행하고 있다는 오류
  fout.close();
  fscan.close();
  fin.close();
 }
}

성적입력(최종)

개발/코딩 2013. 9. 26. 16:59

package struct;

import java.util.Scanner;

import function.Record;

public class Program3 {
 static int inputMenu(){
  int menu;
  Scanner in = new Scanner(System.in);
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           메인 메뉴                             │");
  System.out.println("└─────────────────────────────┘");
  System.out.println("1.성적 입력");
  System.out.println("2.성적 출력");
  System.out.println("3.종료");
  System.out.print("선택>");
  menu = in.nextInt();
  return menu;
 }

 static int inputRecord(Record[] record,int current){
  
  int kor,eng,math;
  Scanner a = new Scanner(System.in);
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           성적 입력                             │");
  System.out.println("└─────────────────────────────┘");
  
  while(true)   //입력을 계속 하기위한 반복문
  {
  do {
   System.out.print("국어:");
   kor = a.nextInt();

   if (kor < 0 || kor > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (kor < 0 || kor > 100);

  do {
   System.out.print("영어:");
   eng = a.nextInt();

   if (eng < 0 || eng > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (eng < 0 || eng > 100);

  do {
   System.out.print("수학:");
   math = a.nextInt();

   if (math < 0 || math > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (math < 0 ||math > 100);
  
  record[current]=new Record();  //배열원소의 객체 생성,record 배열
  record[current].kor=kor;
  record[current].eng=eng;
  record[current].math=math;
  current ++;
  
  System.out.println("계속 입력하시겠습니까?(1,0)>");
  int isContinue=a.nextInt();
  if(isContinue==1)
  {
   continue;
  }
  else
   return current;
 }
  
 }
 
 static void printRecord(Record[] record,int current){
 
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           성적 출력                             │");
  System.out.println("├────┬────┬────┬────┬────┬────┤");
  System.out.println("│ 번호 │ 국어 │ 영어 │ 수학 │ 총점 │ 평균 │");
  for (int i = 0; i < current; i++) {
   Record A = record[i]; //리턴값은 하나만 받을수 있기 때문에, 한번에 값을 가져오기위해 선언
   int total = A.kor + A.eng + A.math;   //total, avg는 자체적으로 가능하고
   float avg = total / 3.0f;      //kor,eng,math는 서로 공유 하고 있기때문에
   System.out.println("├────┼────┼────┼────┼────┼────┤");
   System.out.printf("│%3d │%3d │%3d │%3d │%3d │%6.2f │\n",i + 1, A.kor, A.eng, A.math, total, avg);
  
  }
  System.out.println("└────┴────┴────┴────┴────┴────┘"); 
 }
 
 public static void main(String[] args) {
  Scanner a = new Scanner(System.in);
  Scanner in = new Scanner(System.in);
  int current=0;  //현재 레코드에 입력이 없다.
  Record[] record = new Record[3];   //Record 참조변수 3개 생성
  int total = 0;
  float avg = 0;
  int menu = 0;
  
  뿅:while (true)
  {    
   switch (inputMenu())
   {   
   case 1:
    current=inputRecord(record,current); //current 값. 몇개 입력받았는지 return.
    break;
   case 2:
    printRecord(record,current);
    break; 
   case 3:
    System.out.println("종료됩니다");
    break 뿅;    
   default:
    System.out.println("입력이 잘못됐습니다. 다시 입력하세요");
   }
  }
 }
}

 

 

 

package struct;   리턴은 하나만 반환할 수 있으므로 클래스를 별도로 선언했다.한번에 담을수 있는 곳.

public class Record {
 int kor;
 int eng;
 int math;
}

성적관리->> 함수 쓰고, 클래스 써서

개발/코딩 2013. 9. 25. 18:53

package struct;

import java.util.Scanner;

import function.Record;

public class Program2 {
 static int inputMenu(){
  int menu;
  Scanner in = new Scanner(System.in);
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           메인 메뉴                             │");
  System.out.println("└─────────────────────────────┘");
  System.out.println("1.성적 입력");
  System.out.println("2.성적 출력");
  System.out.println("3.종료");
  System.out.print("선택>");
  menu = in.nextInt();
  return menu;
 }

 static void inputRecord(Record record){  // 변수3개 모두 리턴으로 넘기지 못하기때문에 클래스를 선언한다.
  int kor,eng,math;
  Scanner a = new Scanner(System.in);
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           성적 입력                             │");
  System.out.println("└─────────────────────────────┘");

  do {
   System.out.print("국어:");
   kor = a.nextInt();

   if (kor < 0 || kor > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (kor < 0 || kor > 100);

  do {
   System.out.print("영어:");
   eng = a.nextInt();

   if (eng < 0 || eng > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (eng < 0 || eng > 100);

  do {
   System.out.print("수학:");
   math = a.nextInt();

   if (math < 0 || math > 100)
    System.out.println("성적 범위를 벗어났습니다,다시 입력하세요");
  } while (math < 0 ||math > 100);
  record.kor=kor;
  record.eng=eng;
  record.math=math;
  
 }
 
 static void printRecord(Record record){
  int total = record.kor + record.eng + record.math;   //total, avg는 자체적으로 가능하고
  float avg = total / 3.0f;      //kor,eng,math는 서로 공유 하고 있기때문에
  System.out.println("┌─────────────────────────────┐");
  System.out.println("│           성적 출력                             │");
  System.out.println("├────┬────┬────┬────┬────┬────┤");
  System.out.println("│ 번호 │ 국어 │ 영어 │ 수학 │ 총점 │ 평균 │");
  for (int i = 0; i < 3; i++) {
   System.out.println("├────┼────┼────┼────┼────┼────┤");
   System.out.printf("│%3d │%3d │%3d │%3d │%3d │%6.2f │\n",i + 1, record.kor, record.eng, record.math, total, avg);
  }
  System.out.println("└────┴────┴────┴────┴────┴────┘"); 
 }
 
 public static void main(String[] args) {
  Record record = new Record();
  int total = 0;
  float avg = 0;
  int menu = 0;
  Scanner a = new Scanner(System.in);
  Scanner in = new Scanner(System.in);
  뿅:while (true) {
    
   switch (inputMenu()) {
   
   case 1:
   inputRecord(record);
    break;

   case 2:
    printRecord(record);
    break;
    
   case 3:
    System.out.println("종료됩니다");
    break 뿅;
    
   default:
    System.out.println("입력이 잘못됐습니다. 다시 입력하세요");
   }
  }
 }
}

public class Record{      //class 선언

int kor;

int eng;

int math;

}

 

 

 

함수쓰는거 업그레이드

개발/코딩 2013. 9. 24. 17:23

package Array;

import java.util.Random;

public class Program {

 static void genLotto(int[] lotto) {
  Random rand = new Random();
  for (int i = 0; i < 6; i++)
   lotto[i] = rand.nextInt(45) + 1;
 }
 static void printLotto(int[] lotto){
  for (int i = 0; i < 6; i++)
   System.out.printf("%d ", lotto[i]);
 }
 static void lineLotto(int[]lotto){
  Random rand = new Random();
  for (int k = 0; k < 5; k++)
  {
   for (int i = 0; i < 5; i++) // 큰 수를 뒤로 배열하고 중복되는 수가 있다면 새로 출력하는 과정
   {
    if (lotto[i] > lotto[i + 1]) // 큰 수를 뒤로
    {
     int t;
     t = lotto[i];
     lotto[i] = lotto[i + 1];
     lotto[i + 1] = t;
    }

    else if (lotto[i] == lotto[i + 1]) // 만약 두 수가 같다면
    {
     System.out.println("중복"); // '중복' 출력
     lotto[i + 1] = rand.nextInt(45) + 1; // 뒤에 있는 수를 새로 출력
    }
   }
  }
  for (int i = 0; i < 6; i++)
   System.out.printf("%d ", lotto[i]);
  
 }
 
 public static void main(String[] args) {

  Random rand = new Random();
  int[] lotto = new int[6];  

  genLotto(lotto);
  
  /*for (int i = 0; i < 6; i++)
   System.out.printf("%d ", lotto[i]);*/
  printLotto(lotto);
  
  System.out.println();
  /*for (int k = 0; k < 5; k++)
  {
   for (int i = 0; i < 5; i++) // 큰 수를 뒤로 배열하고 중복되는 수가 있다면 새로 출력하는 과정
   {
    if (lotto[i] > lotto[i + 1]) // 큰 수를 뒤로
    {
     int t;
     t = lotto[i];
     lotto[i] = lotto[i + 1];
     lotto[i + 1] = t;
    }

    else if (lotto[i] == lotto[i + 1]) // 만약 두 수가 같다면
    {
     System.out.println("중복"); // '중복' 출력
     lotto[i + 1] = rand.nextInt(45) + 1; // 뒤에 있는 수를 새로 출력
    }
   }
  }
  for (int i = 0; i < 6; i++)
   System.out.printf("%d ", lotto[i]); // 중복되지 않은 배열을 출력*/
   lineLotto(lotto);
 }
}

함수쓰느너

개발/코딩 2013. 9. 24. 16:07

package function;

public class Function {

 static int add(int x,int y)
 {
    return x+y; //int sum 에 반환하는 값
 }
 public static void main(String[] args){
  
  int x=3;
  int y=4;
  int sum=add(x,y);
  
  System.out.printf("%d",sum);
 }
}


 

정수 10개를 입력받아 배열에 저장후 큰순서 대로 프린트

개발/코딩 2013. 9. 24. 10:26

package Array;

import java.util.Scanner;

public class Program {
 public static void main(String[] args){
  Scanner in=new Scanner(System.in);
  int[]A=new int[10];
  int i,j,temp=0;
  for(i=0;i<A.length;i++){    //임의의 정수 입력받음
   A[i]=in.nextInt();  
  }
  
  for(i=0;i<A.length;i++){    //순차적으로 배치
  for(j=i+1;j<10;j++){
   if(A[i]>A[j]){
   temp=A[i];
   A[i]=A[j];
   A[j]=temp;
   }
  }
  System.out.printf("%3d",A[i]);
 }
}
}

'개발 > 코딩' 카테고리의 다른 글

함수쓰는거 업그레이드  (0) 2013.09.24
함수쓰느너  (0) 2013.09.24
로또 중복안되게...짜증나네  (0) 2013.09.23
달력 만들기  (0) 2013.09.23
lotto  (0) 2013.09.17

로또 중복안되게...짜증나네

개발/코딩 2013. 9. 23. 18:34

package Array;

import java.util.Random;

public class Program {
 public static void main(String[] args) {
  Random rand = new Random(); // 랜덤 함수
  int[] Lotto = new int[6]; // 배열 선언
  for (int i = 0; i < Lotto.length; i++) {
   int A=rand.nextInt(45) + 1; // 배열선언시 0부터 시작하므로 +1
   for(int j=0;j<Lotto.length;j++){
    if(A==Lotto[j]){
     A=rand.nextInt(45) + 1; // 배열선언시 0부터 시작하므로 +1
     j = -1;          //j++ 값을 상쇄시켜주기 위해(증감을 막음. 비교하기 위해서)
    }
   }
   Lotto[i]=A;
   System.out.printf("%d ", Lotto[i]); // 로또 랜덤 6개 출력
  }
  System.out.println(); // 띄어쓰기 프린트

  for (int i = 0; i < 6; i++) {
   for (int k = i + 1; k < 6; k++) {
    if (Lotto[i] > Lotto[k]) { // 두수를 비교해서 i값이 크다면
     int temp;
     temp = Lotto[i];
     Lotto[i] = Lotto[k];
     Lotto[k] = temp; // 큰숫자를 뒤로 보낸다
    }
   }

   System.out.printf("%d ", Lotto[i]);
  }
 }
}

'개발 > 코딩' 카테고리의 다른 글

함수쓰느너  (0) 2013.09.24
정수 10개를 입력받아 배열에 저장후 큰순서 대로 프린트  (0) 2013.09.24
달력 만들기  (0) 2013.09.23
lotto  (0) 2013.09.17
성적 입력(switch)  (0) 2013.09.17