- 기존 코드는 필드와 메소드(setter/getter)로만 사용한 반면 복습을 통해 생성자로 코드를 재작성 해봄. (getter도 같이 이용)
사칙연산계산기
import java.util.Scanner;
//클래스 필드 생성자 메소드 오버로딩
//계싼기 객체 계산기 쓸 수 있는 환경
//생성자를 이용한 사칙연산계산기
public class OperNew {
// 필드 초기화 : 사용할 변수들
private int num1, num2;
private char op;
public OperNew() { } // 디폴트 생성자
public OperNew(int a, char b, int c) {
this.num1 = a;
this.op = b;
this.num2 = c;
}
public int getA() {
return num1;
}
public char getB() {
return op;
}
public int getC() {
return num2;
}
public int add() { // 더하기
System.out.print(getA()+" + "+getC()+" = ");
return getA()+getC();
}
public int sub() { // 빼기
System.out.print(getA()+" - "+getC()+" = ");
return getA()-getC();
}
public int mul() { // 곱
System.out.print(getA()+" * "+getC()+" = ");
return getA()*getC();
}
public float div() { // 나눔
System.out.print(getA()+" / "+getC()+" = ");
return (float)getA()/getC();
}
public static void main(String[] args) {
int num1, num2;
char op, str;
Scanner sc = new Scanner(System.in);
do {
System.out.println("연산 수식 입력 : ");
num1 = sc.nextInt();
op = sc.next().charAt(0);
num2 = sc.nextInt();
OperNew ce = new OperNew(num1, op, num2); // 생성자 객체 생성
switch(ce.getB()) {
case '+' :
System.out.println(ce.add());break;
case '-' :
System.out.println(ce.sub());break;
case '*' :
System.out.println(ce.mul());break;
case '/' :
System.out.println(ce.div());break;
}
System.out.println();
System.out.print("Continue?(y/n) : ");
str = sc.next().charAt(0);
if(str == 'n' || str == 'N') {
System.out.println("End");
break;
}
}while(str == 'y' || str == 'Y');
}
}
- 기존 코드는 score안의 값을 입력함에 있어 좀 더 유연한 코드로 생각해봄 스터디 내 팀원의 코드를 바탕으로 재작성 및 재복습하게됨.
1인 성적처리
/*
* 성적처리프로그램
* 입력 : 이름, 국, 영, 수
* 연산 : 총점, 평균
* 출력 : 이름, 국, 영, 수, 총, 평
*/
import java.util.Scanner;
public class ArrayNew {
private String name;
private int []score; //= new int[4];//국 영 수 총
private float avg;
public ArrayNew() {
name = "";
score = new int[4];
avg = 1.f;
}
public void setName(String name) {
this.name = name;
}
public void setScore(int i, int score) {
this.score[i] = score;
}
public void setAvg(float data) {
avg = data;
}
public void seTotal(int score) { // 총점
// 출력할때 getScore에서 마지막 인덱스를 쓰기 위함임.
this.score[3] += score;
}
public String getName() {
return name;
}
public int[] getScore() {
return score;
}
public float getAvg() {
return avg = score[3]/3.0f;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 객체선언
ArrayNew ae = new ArrayNew();
System.out.print("이름 입력 : ");
ae.setName(sc.next());
for(int i=0;i<ae.getScore().length-1;i++) {
System.out.print("성적 입력(국 영 수) : ");
ae.setScore(i,sc.nextInt());
ae.seTotal(ae.getScore()[i]);
}
// 출력
System.out.println(ae.getName());
for(int i=0;i<ae.getScore().length;i++) {
System.out.println(ae.getScore()[i]);
}
//System.out.println(ae.getTotal());
System.out.println(ae.getAvg());
}
}
반응형
'자바과정 > 스터디' 카테고리의 다른 글
파이썬 기초 다지기 (2) | 2021.02.27 |
---|---|
Java 기초 - 6일차 (0) | 2021.02.04 |
스터디 3일차(this, 클래스, 실습추가) (0) | 2021.02.03 |
스터디 2일차 (0) | 2021.02.02 |
스터디 1일차 (0) | 2021.02.02 |
댓글