일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 그래프
- bootstrap
- 자바문제풀이
- 웹해킹기초
- 뷰
- 웹개발
- 이진트리
- 자바
- nodeJS
- gitbash
- 포렌식워게임
- node.js
- 써니나타스
- wargame.kr
- 포렌식
- CTF
- 자료구조
- 워게임
- 워게임추천
- mongoose
- 자바기초
- 웹기초
- node
- Express
- 이진탐색트리
- 웹해킹
- MongoDB
- materialize
- NavBar
- GIT
- Today
- Total
보안 전공생의 공부
클래스 관련 문제풀이 본문
Person 클래스를 생성하고 필드로 age,name,marriage, children 을 선언하였다.
그리고 생성자 Perosn을 만든 후,
클래스 내에 print 매서드를 선언하였다.
그리고 Q1(여기서 main 클래스) 클래스에서 Person 인스턴스를 생성하고
이에 대한 메서드 print를 호출했다.
Scanner 함수를 이용하기 위해
제일 먼저 import java.util.Scanner; 을 입력해야 한다. ( import java.util.*이더문제를풀때유용)
package practice;
import java.util.*;
class Grade {
private int math;
private int science;
private int english;
//필드
Grade(int math, int science, int english) {
this.math=math;
this.science=science;
this.english=english;
}//생성자
public int average(){
double avg = (math+science+english)/3;
return (int)avg;
}//메소드
}
public class Q2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("수학, 과학, 영어 순으로 3개의 정수 입력 >> ");
int math=sc.nextInt();
int science = sc.nextInt();
int english = sc.nextInt();
Grade me = new Grade(math, science, english);
System.out.println("평균은"+ me.average()); //average()는 평균을 계산해 리턴
sc.close();
}
}
Q1 처럼 Grade 클래스를 따로 생성했었는데, private 접근제어자 때문인지
자꾸 실행이 안되어서 Q2 클래스와 함께 생성하니 해결이 되었다.
Grade 클래스 내에 math, science, english 필드를 선언하고
생성자 Grade를 만들고
average 메서드를 선언했다.
그리고 Q2(여기서 main클래스)클래스에서 nextInt()로 변수들을 입력받고
인스턴스 Grade를 호출한 후,
매서드 average를 호출해 출력되도록 하였다.
<Ractangle 클래스>
package practice;
public class Rectangle {
int x,y,width,height;
//필드
Rectangle(int x, int y, int width, int height){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
}//생성자
public int square() {
return width*height;
}//메서드
public void show() {
System.out.println("("+x+","+y+")에서 크기가 "+width+"*"+height+"인 사각형");
}//메서드
boolean contains(Rectangle r) {
if((width+x)>(r.width+r.x) && height+y>(r.height+r.y)) {
if(x<r.x && y<r.y) {
return true;
}
return false;
}
return false;
}//메서드
}
Rectangle 클래스에 x,y,width,height 필드를 생성하고
Rectangle 생성자를 선언한다.
그리고 문제처럼 메서드 square, show, contains를 선언한다.
boolean 형인 contains 메서드를 작성할 때 제일 애를 먹었다.
Rectangle r의 x,y(좌표)가 x,y(좌표)보다 큰 값을 가져야하고,
Recntagle r의 width,height(넓이)가 width,heigth(넓이)보다 작은 값을 가져야
직사각형 r이 현 r의 내부에 포함된다는 것을 유의해야 했다 !
처음에는 넓이만 고려했었는데, 좌표값도 신경써야 했던 것이다.
<Q3클래스(main)>
package practice;
public class Q3 {
public static void main(String[] args){
Rectangle r = new Rectangle(2,2,8,7);
Rectangle s = new Rectangle(5,5,6,6);
Rectangle t = new Rectangle(1,1,10,10);
r.show();
System.out.println("s의 면적은"+s.square());
if(t.contains(r)) System.out.println("t는 r을 포함합니다.");
if(t.contains(s)) System.out.println("t는 s를 포함합니다.");
}
}
Q3는 문제에서 주어진대로 입력하면 된다. 출력결과 잘 실행된다
'Language > JAVA' 카테고리의 다른 글
문제풀이 (0) | 2021.02.15 |
---|---|
상속, 다형성, 추상 클래스 (0) | 2021.02.14 |
클래스(2) | 접근 제어자, 정적변수·메소드 (0) | 2021.01.31 |
객체지향프로그래밍에 대해 /클래스 (1) (0) | 2021.01.23 |
백준 2739번 (0) | 2021.01.18 |