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

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

댓글