본문 바로가기
코딩/자바 기초특강

20.11.18 WED

by 6^6 2020. 11. 18.
728x90

 

  • 매소드
  • 재귀함수
  • 클래스와 인스턴스 - 자바의 핵심

boolean함수 활용하는거 어렵..

1번. 

//1번 boolean을 이용해서 소수만 나오는 리턴 메소드 만들기
public class ee {
public static void main(String[] args) {
for(int i = 1; i<=100; i++) {
if(isPrimeNumber(i))
System.out.println(i);
}
}
//num이 2~99까지 나눠지는 수가 0이되면 소수x
public static boolean isPrimeNumber(int num) {
if(num==1) //
return false;
//i는<100보다 작아야함(=num) 근데 100이라고쓰면 오류남
for(int i=2; i<num; i++) {
if(num%i==0)
return false;//0이되면 pass=false
}
return true;//0이 아니면 위로 returnㄱㄱ
}
}

 

 

 

2번 divide(a,b) a에서b을 나눴을때 몫 구하기 / ★b는0이 되면 오류가 남. 0으로 나누는건 불가능

void에syso있으면 밑에 int 블라()가능 return 0;가능 없으면 밑에도 void, return;만 가능 why?

//2번 나눗셈 결과값
public class ee {
public static void main(String[] args) {
divide(4,20);
divide(6,2);
divide(9,0);
}
public static void divide(int num1, int num2) { //★위에서 syso로 출력하는 값이 없기때문에 없기때문에 void라고 써야함★
if(num2==0) { //if문 주석처리하게되면
System.out.println("0으로 나눌 수 없습니다.");
return; // 값의 반환없이 메소드만 종료//return 0;이런식으로 쓰면 오류 void여서
}
System.out.println("나눗셈 결과: "+(num1/num2));
}
}

 

 

 

재귀함수

함수에서 자기자신 호출하는 것.

 

1번

//1번 팩토리얼(!)함수 만들기
public class ee {
public static void main(String[] args) {
System.out.println("3 factorial: " + factorial(3));
System.out.println("12 factorial: " + factorial(12));
}
public static int factorial(int n) {
if(n==1)
return 1;
else
return n*factorial(n-1); //재귀함수
}
}

 

2번

//2번 제곱한 수 재귀함수로 만들기
public class ee {
public static void main(String[] args) {
System.out.println("2의 5승 :" + powerOfTwo(5));
System.out.println("2의 7승 :" + powerOfTwo(7));
}
public static int powerOfTwo(int n) {
if(n==0)
return 1;
else
return 2*powerOfTwo(n-1); //f(n) = 2*f(n-1)
}
}
//f(3) 이라고할때
//2*f(2)
//2*2*f(1)
//2*2*2*f(0)
//2*2*2*1

 

 

 

3번.

java_area패키지만들고 AreaMain클래스와 Rectagle클래스 만들어서 호환시키기

package java_area;//사각형
public class Rectagle { //사각형 넓이 구하기
int width;
int height;
public void setWidth(int width) { //width값 정하기
this.width = width;
}
public void setHeight(int height) { //height값 정하기
this.height = height;
}
public int getArea() {
return width * height;
}
}
package java_area; //삼각형
public class Triangle {
int width;
int height;
public void setWidth(int width) {
this.width = width;
}
public void setHeight(int height) {
this.height = height;
}
public double getArea() {
return width * height / (2.0);
}
}
package java_area; // 삼각형,사각형 넓이 최종
public class AreaMain {
public static void main(String[] args) {
Rectagle rectagle = new Rectagle();
rectagle.setHeight(10);
rectagle.setWidth(10);
int area = rectagle.getArea();
System.out.println("사각형넓이 : "+area);
//삼각형값 추가
Triangle triangle = new Triangle();
triangle.setHeight(5);
triangle.setWidth(5);
double triarea = triangle.getArea();
System.out.println("삼각형넓이 : "+triarea);
}
}

 

삼각형넓이까지 구하기

 

 

4번. 입출금계좌 잔액확인-코드 그림 그리고 설명할줄 알아야함

**BankAccount yoon = new BankAccount(); 파헤치기**

int i= 블라블라; //int는 형. 데이터 타입
BankAccount yoon = 블라블라; // BankAccont는 참조형=레퍼런스형. 클래스타입

()는 함수다

변수선언=메모리할당
yoon이라는 이름으로 메모리 만듦.
1.크기 (ex. int는 4byte)(ex. BankAccount는 4byte(2^32bit))  //왜인진모르겠지만 생성되는 byte값이 매우 중요한것같음
2.데이터(정수인지 실수인지)  (ex. int는 정수)

new를 쓰게되면 그 다음에 쓰는 함수를 호출하는 것
new - 객체생성

**yoon.deposit(5000); 해석**
.은 해당번지 찾아가서 실행시켜라 라는뜻
여기서는 deposit찾아가서 실행시켜라

package java_area;
public class BankAccount {
int balance = 0; //예금잔액
public int deposit(int amount) {
balance += amount;
return balance;
}
public int withdraw(int amount) {
balance -= amount;
return balance;
}
public int checkMyBalance() {
System.out.println("잔액 : "+balance);
return balance;
}
}
package java_area;
public class BankAccount00 {
public static void main(String[] args) {
//두개의 인스턴스(객채) 생성
BankAccount park = new BankAccount(); //이런게 객체
BankAccount kim = new BankAccount();
//각 인스턴스를 대상으로 예금을 진행
park.deposit(5000);
kim.deposit(3000);
//각 인스턴스를 대상으로 출금을 진행
park.withdraw(3000);
kim.withdraw(200);
//각 인스턴스를 대상으로 잔액을 조회
park.checkMyBalance();
kim.checkMyBalance();
}
}
package java_area;
public class DupRef {
public static void main(String[] args) {
BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;
ref1.deposit(3000); //3000
ref2.deposit(2000); //5000
ref1.withdraw(300); //4700
ref2.withdraw(200); //4500
ref1.checkMyBalance(); //4500
ref2.checkMyBalance(); //4500
}
}

 

728x90

'코딩 > 자바 기초특강' 카테고리의 다른 글

20.11.19 THU  (0) 2020.11.19
20.11.17 TUE 메소드  (0) 2020.11.17
20.11.06 FRI 자바기초특강 5  (0) 2020.11.06
20.11.05 THU 자바 기초특강  (0) 2020.11.05
20.11.04 WED 3일차 과제 --11.05 THU 과제 피드백  (0) 2020.11.04

댓글