1. 메소드 (기능)
1-1. 메소드의 작성 목적
- 중복된 코드 제거
- 코드의 재사용성 향상
- 코드의 가독성
1-2. 메소드 형식
접근제한자 반환타입 메소드이름(매개변수타입 매개변수명, 매개변수타입 매개변수명, ...) {
수행문;
수행문;
수행문;
}
public static void main(String[] args) {
}
출력하기 {
System.out.println("이름: "+...);
System.out.println("이름: "+...);
System.out.println("이름: "+...);
}
- 메소드의 선언부
: 접근제한자 반환타입 메소드이름(매개변수타입 매개변수명, 매개변수타입 매개변수명, ...)- 접근제한자 ( ex. public )
- 이 메소드의 공개범위 지정 (전체공개, 패키지 공개, 비공개)
- 메소드는 대부분 전체공개로 지정
- public 접근제한자는 메소드 전체공개
- private 접근제한자는 메소드 비공개 - 반환타입 ( ex. void )
- 이 메소드의 최종 결과값의 데이터타입 지정
- 반환타입은 void, void와 아닌 경우로 구분
- 반환타입이 void : 이 메소드는 값을 반환하지 않는 메소드
- 이 메소드를 실행하고나서 획득된 값의 타입. 획득된 값을 저장하는 변수를 정의할 때 꼭 필요한 정보. - 메소드이름 ( ex. main )
- 수행문을 포함하고 있는 코드블록의 이름
- 메소드이름은 동사로 시작하고, 코드블록 내의 수행문이 수행하는 작업을 잘 드러내는 이름 - 매개변수타입과 매개변수명 ( ex. (String[] args) )
- 이 메소드 실행시 전달받는 값의 타입과 그 값을 저장하는 변수의 이름 지정
- 전달받는 값이 없으면 생략 가능
- 접근제한자 ( ex. public )
반환(획득)하는 값 - 기본자료형의 값, 배열, 객체
전달받는 값 - 기본자료형의 값, 배열, 객체
전달받은 값을 어디다가 저장해야돼 -> 매개변수 (변수타입 변수명)
매개변수에 들어있는 값을 꺼내서 수행문에서 사용
- 메소드 4가지 유형
1) 매개변수: 없음, 반환타입: 없음 - public void test() { ... }
예시) - 회원정보 전체 삭제 (전달받을 값, 반환값 필요 x)
2) 매개변수: 없음, 반환타입: 있음 - public 타입 test() { ... }
예시) - 회원정보 전체 조회 -> 전체 회원정보가 획득됨
- 전체 사원 수 조회 -> 사원 수 획득
- 전체 평균점수 조회 -> 평균점수 획득
3) 매개변수: 있음, 반환타입: 없음 - public void test(타입 변수명, 타입 변수명) { ... }
예시) - 회원번호에 해당하는 회원정보 삭제 (회원번호를 전달받아야 함 -> 변수 필요)
- 사원번호에 해당하는 사원의 급여 인상 (사원번호, 인상액)
4) 매개변수: 있음, 반환타입: 있음 - public 타입 test(타입 변수명, 타입 변수명) { ... }
예시) - 제목을 전달받아서 제목을 포함하고 있는 도서정보 조회
-> 제목을 전달받음
-> 제목을 포함하고 있는 도서정보 획득
- 지정된 날짜의 매출액 조회
-> 날짜를 전달받음
-> 매출액 조회
- 매개변수 x -> 범위가 없는 전체 조회
반환타입
반환타입 x -> 변경할 때
반환타입 o -> 조회할 때
- 메소드 예시)
- public void increaseSalary(int employeeNo, int amount) { ... }
// 급여를 인상시키는 메소드
// 사원번호, 인상액을 전달받으려고 하는구나 - public void deleteUsers(String userId) { ...}
// 유저정보를 삭제하는 메소드
// 유저 아이디를 전달받으려고 하는구나 - public List<Order> getOrders(Date startDate, Date endDate) { ... }
// 해당 기간 동안의 주문정보를 제공하는 메소드
// 시작일자, 종료일자를 전달받으려고 하는구나 - public void removeAllUsers() { ... }
// 모든 사용자의 정보를 삭제하는 메소드 - public int getAllStudentsCount() { ... }
// 모든 학생수를 제공하는 메소드
- public void increaseSalary(int employeeNo, int amount) { ... }
- 메소드의 구현부
: 수행문을 포함하고 있는 코드블록
매개변수가 있는 경우, 메소드 실행시 전달한 값을 사용해서 수행문 실행
반환타입이 void가 아닌 경우, 메소드의 구현부에서는 반드시 값을 반환하는 return문이 있어야 함
* return문 사용예시
return; 반환타입이 void인 메소드에서만 사용가능.
실행중인 메소드를 종료.
생략 가능
return 값; 반환타입이 void가 아닌 메소드에서만 사용가능.
실행중인 메소드를 종료하고, 지정된 값 반환
생략 불가
- Score 클래스 생성
package day8;
public class Score {
// Score클래스의 멤버변수 정의 = Score객체를 생성할 수 있게 만든 것
String name;
int kor;
int eng;
int math;
int total;
double average;
boolean isPassed;
- Score객체를 생성해서 score1, score2, score3 변수에 대입
score1이 참조하는 객체, score2가 참조하는 객체, score3이 참조하는 객체, 총 객체 3개
(new 할 때마다 Score객체가 따로, 새로 만들어진거)
package day8;
public class ScoreApp2 {
public static void main(String[] args) {
// 김유신, 이순신, 류관순의 성적정보를 각각 저장하는 Score객체 생성하기
// score1이 참조하는 객체, score2가 참조하는 객체, score3이 참조하는 객체, 총 객체 3개
Score score1 = new Score();
score1.name = "김유신"; //score1이 참조하는 객체의 name변수에 대입할 값
score1.kor = 100;
score1.eng = 90;
score1.math = 80;
score1.total = score1.kor + score1.eng + score1.math;
score1.average = (double) score1.total/3;
score1.isPassed = score1.average >= 60;
Score score2 = new Score();
score2.name = "이순신";
score2.kor = 90;
score2.eng = 80;
score2.math = 70;
score2.total = score2.kor + score2.eng + score2.math;
score2.average = (double) score2.total/3;
score2.isPassed = score2.average >= 60;
Score score3 = new Score();
score3.name = "류관순";
score3.kor = 80;
score3.eng = 70;
score3.math = 60;
score3.total = score3.kor + score3.eng + score3.math;
score3.average = (double) score3.total/3;
score3.isPassed = score3.average >= 60;
System.out.println("김유신의 성적정보");
System.out.println("이름: "+score1.name);
System.out.println("국어: "+score1.kor);
System.out.println("영어: "+score1.eng);
System.out.println("수학: "+score1.math);
System.out.println("총점: "+score1.total);
System.out.println("평균: "+score1.average);
System.out.println("합격여부: "+score1.isPassed);
System.out.println("이순신의 성적정보");
System.out.println("이름: "+score2.name);
System.out.println("국어: "+score2.kor);
System.out.println("영어: "+score2.eng);
System.out.println("수학: "+score2.math);
System.out.println("총점: "+score2.total);
System.out.println("평균: "+score2.average);
System.out.println("합격여부: "+score2.isPassed);
System.out.println("류관순의 성적정보");
System.out.println("이름: "+score3.name);
System.out.println("국어: "+score3.kor);
System.out.println("영어: "+score3.eng);
System.out.println("수학: "+score3.math);
System.out.println("총점: "+score3.total);
System.out.println("평균: "+score3.average);
System.out.println("합격여부: "+score3.isPassed);
}
}
* 근데 이게 너무 길고, 중복되는게 너무 많아! ---> 메소드 이용
- 1) 이름, 국어, 영어, 수학점수를 전달받아서 객체의 멤버변수에 대입하는 메소드
2) 총점, 평균, 합격여부 계산해서 지정하는 메소드
3) 성적정보를 출력하는 메소드
이 메소드를 Score 클래스에 생성
package day8;
public class Score {
// Score클래스의 멤버변수 정의 = Score객체를 생성할 수 있게 만든 것
String name;
int kor;
int eng;
int math;
int total;
double average;
boolean isPassed;
// 이름, 국어, 영어, 수학점수를 전달받아서 객체의 멤버변수에 대입하는 메소드
// 접근제한 : public
// 반환타입 : void (값 반환(획득) 없이 화면에 출력만 할거니까)
// 메소드이름 : setScore
// 매개변수 : String studentName, int korScore, int engScore, int mathScore
public void setScore(String studentName, int korScore, int engScore, int mathScore) {
name = studentName;
kor = korScore;
eng = engScore;
math = mathScore;
}
// 속성에 저장된 국어, 영어, 수학점수로 총점과 평균을 계산하여 저장하고, 합격여부를 지정하는 메소드
// 접근제한 : public
// 반환타입 : void (값 반환 없이 화면에 출력만 할거니까)
// 메소드이름 : processScore
// 매개변수 : 없음 (전달받을 값 없음)
public void processScore() {
total = kor + eng + math;
average = (double) total / 3;
isPassed = average >= 60;
}
// 모든 성적정보를 화면에 출력하는 메소드
// 접근제한자 : public
// 반환타입 : void
// 메소드이름 : printScore
// 매개변수 : 없음
public void printScore() {
System.out.println("["+name+"] 성적정보를 출력합니다");
System.out.println("이름: " + name);
System.out.println("국어: " + kor);
System.out.println("영어: " + eng);
System.out.println("수학: " + math);
System.out.println("총점: " + total);
System.out.println("평균: " + average);
System.out.println("합격여부: " + isPassed);
System.out.println();
}
}
- 메소드를 통해 중복된 코드 줄임
package day8;
public class ScoreApp2 {
public static void main(String[] args) {
// 김유신, 이순신, 류관순의 성적정보를 각각 저장하는 Score객체 생성하기
// score1이 참조하는 객체, score2가 참조하는 객체, score3이 참조하는 객체, 총 객체 3개
Score score1 = new Score();
score1.setScore("김유신", 100, 90, 80); //"김유신"이 studentName, 100이 korScore, 90이 engScore, 80이 mathScore에 저장됨
score1.processScore();
score1.printScore(); //score1이 바라보는 객체 안에 있는 printScore 메소드 실행
Score score2 = new Score();
score2.setScore("이순신", 90, 80, 70);
score2.processScore();
score2.printScore();
Score score3 = new Score();
score3.setScore("류관순", 80, 70, 60);
score3.processScore();
score3.printScore();
}
}
[김유신] 성적정보를 출력합니다
이름: 김유신
국어: 100
영어: 90
수학: 80
총점: 270
평균: 90.0
합격여부: true
[이순신] 성적정보를 출력합니다
이름: 이순신
국어: 90
영어: 80
수학: 70
총점: 240
평균: 80.0
합격여부: true
[류관순] 성적정보를 출력합니다
이름: 류관순
국어: 80
영어: 70
수학: 60
총점: 210
평균: 70.0
합격여부: true
- Score 클래스 - Score객체를 생성하기 위한 설계도 (설계도로는 아무것도 할 수 없음)
- 필드 (객체의 속성)
학생이름, 국어, 영어, 수학, 총점, 평균, 합격여부 - 메소드 (객체의 기능)
성적입력 기능, 성적처리 기능, 성적출력 기능
- 필드 (객체의 속성)
- Score 객체 - 관리할 성적정보가 있을 때, 성적정보 하나당 객체 한 개
- 객체의 속성에 성적정보를 저장하고 유지할 수 있다.
- 객체의 기능을 실행해서 필요한 작업을 수행할 수 있다.
- 관리할 성적정보의 수만큼 Score 객체를 생성
-> 그럼 성적정보의 수가 많아지면?
- Score 배열 객체 - 성적정보 여러개 관리할 때
- Score[ ] scores = new Score[100]; (아예 안씀)
- Score[ ] scores = new Score[100]; (아예 안씀)
- Score 콜렉션 객체 - 성적정보 여러개를 관리할 때
- Set<Score> scores = new HashSet<>();
- List<Score> scores = new ArrayList<>(); (이거를 젤 많이 씀)
- 배열객체에 저장된 성적정보 출력하기
package day8;
public class ScoreApp3 {
public static void main(String[] args) {
// 학생성적정보를 3개 저장하는 Score배열 객체를 생성하고, 학생성적정보를 3개 저장한다.
// scores는 Score객체를 3개 저장하는 배열객체를 참조하는 참조변수
Score[] scores = new Score[3];
Score score1 = new Score();
score1.setScore("김유신", 80, 100, 70);
Score score2 = new Score();
score2.setScore("강감찬", 70, 50, 60);
Score score3 = new Score();
score3.setScore("홍길동", 50, 40, 50);
// scores 참조변수가 참조하는 배열객체의 0번째, 1번째, 2번째 칸에 위에서 생성한 Score객체 저장하기
scores[0] = score1; //참조변수 score1가 참조하는 배열객체 scores의 0번째 칸에 score1의 주소값
scores[1] = score2;
scores[2] = score3;
// scores 참조변수가 참조하는 배열객체에 저장된 모든 성적정보 출력하기
for (Score score : scores ) { //배열에서 하나씩 꺼내서 Score에 있는 메소드(기능) 실행
score.processScore();
score.printScore();
}
}
}
[김유신] 성적정보를 출력합니다
이름: 김유신
국어: 80
영어: 100
수학: 70
총점: 250
평균: 83.33333333333333
합격여부: true
[강감찬] 성적정보를 출력합니다
이름: 강감찬
국어: 70
영어: 50
수학: 60
총점: 180
평균: 60.0
합격여부: true
[홍길동] 성적정보를 출력합니다
이름: 홍길동
국어: 50
영어: 40
수학: 50
총점: 140
평균: 46.666666666666664
합격여부: false
- Score[ ] scores = new Score[5];
// score객체 5개를 담을 수 있는 배열객체 scores 를 생성해서 그 배열객체의 주소값을 scores 변수에 대입 - Score score1 = new Score( );
// Score객체를 생성해서 score1 변수에 대입 - score1.setScore("김유신", 100, 90, 80);
// score1이 가리키는 객체 안에 있는 setScore메소드를 이용해서 값을 대입 - score[0] = score1;
// score1의 주소값을 scores배열의 0번째 칸에 대입 = score[0]도 score1이 참조하는 Score객체의 주소값을 가지게 됨 - Score score2 = new Score( );
score2.setScore("이순신", 90, 80, 70);
scores[1] = score2;
// score2도 똑같이 진행 - for ( Score score : scores) { // ( 변수타입(Socre) 변수명 : 배열)
score.processScore( );
score.printScore( );
}
// 향상된 for문 - 배열의 0번째부터 끝까지 각 저장소에 저장된 값을 순서대로 꺼내서 저장된 변수에 저장하고 블록내의 수행문 실행
( * scores 참조변수가 참조하는 배열의 각 저장소에는 Score객체의 주소값이 저장되어 있다
향상된 for문을 이용해서 각 저장소에서 순서대로 꺼내는 값은 Score객체의 주소값
따라서, scores 배열에서 하나씩 추출한 값을 Score 타입의 변수score에 저장 )
- 키보드로 학생이름, 국어, 영어, 수학 점수를 입력받아서 성적을 출력하기
import utils.KeyboardReader;
public class ScoreApp4 {
public static void main(String[] args) {
// 키보드로 학생이름, 국어, 영어, 수학 점수를 입력받아서 성적을 출력하는 프로그램
KeyboardReader keyboard = new KeyboardReader();
// 학생성적 3개를 저장하는 배열객체 생성하기
Score[] scores = new Score[3];
// 3번 반복할 일 (정보를 3번씩 입력받아서 3번씩 저장하고, 3번씩 출력)
for(int index=0; index<scores.length; index++) {
// 학생이름, 국어, 영어, 수학점수를 입력받기
System.out.print("이름을 입력하세요.");
String name = keyboard.getString();
System.out.print("국어점수를 입력하세요.");
int kor = keyboard.getInt();
System.out.print("영어점수를 입력하세요.");
int eng = keyboard.getInt();
System.out.print("수학점수를 입력하세요.");
int math = keyboard.getInt();
// 입력된 성적정보를 저장할 Score객체 생성하고, setScore() 메소드를 실행해서 생성된 Score객체의 멤버변수에 값을 대입시킨다.
Score score = new Score(); // 각자 다른 새로운 객체를 만들어야 하기 때문에 for문 안에 있어야 함
score.setScore(name, kor, eng, math); //이 setScore의 변수이름은 이 클래스 내에서만 동일하면 됨
// 배열에 Score객체를 저장하기
scores[index] = score; //인덱스가 0일때, Score객체 만들어서 저장하고 ...
System.out.println("배열의 ["+index+"]번째에 성적정보가 저장되었습니다.");
System.out.println();
}
// 배열에 저장된 학생 성적정보 출력하기
System.out.println("-------------------------");
for(Score score : scores) { // 처음부터 끝까지 뽑을거라서 향상된for문, score는 위의 변수랑 상관 x. 위는 끝났음
score.processScore();
score.printScore();
}
}
}
이름을 입력하세요.김유신
국어점수를 입력하세요.100
영어점수를 입력하세요.80
수학점수를 입력하세요.70
배열의 [0]번째에 성적정보가 저장되었습니다.
이름을 입력하세요.강감찬
국어점수를 입력하세요.70
영어점수를 입력하세요.60
수학점수를 입력하세요.70
배열의 [1]번째에 성적정보가 저장되었습니다.
이름을 입력하세요.이순신
국어점수를 입력하세요.100
영어점수를 입력하세요.60
수학점수를 입력하세요.60
배열의 [2]번째에 성적정보가 저장되었습니다.
-------------------------
[김유신] 성적정보를 출력합니다
이름: 김유신
국어: 100
영어: 80
수학: 70
총점: 250
평균: 83.33333333333333
합격여부: true
[강감찬] 성적정보를 출력합니다
이름: 강감찬
국어: 70
영어: 60
수학: 70
총점: 200
평균: 66.66666666666667
합격여부: true
[이순신] 성적정보를 출력합니다
이름: 이순신
국어: 100
영어: 60
수학: 60
총점: 220
평균: 73.33333333333333
합격여부: true
- Score[ ] scores = new Score[3];
// 배열객체 안에 length라는 속성이 있고 거기에는 3이 들어가있음
// 배열객체 안에는 3칸짜리 배열이 있고, 그 배열 한칸에는 Score 객체가 들어가 있음. 이 객체의 기본값은 null
// 이 배열객체의 주소값(0x1111)이 scores 참조변수에 대입 = scores 변수가 배열객체를 참조 - for (int index=0; index<scores.length; index++) {
s.o.p("이름 입력"); String name = keyboard.getString();
s.o.p("국어점수 입력"); int kor = keyboard.getInt();
s.o.p("수학점수 입력"); int kor = keyboard.getInt();
s.o.p("영어점수 입력"); int kor = keyboard.getInt();
// 3번 반복할 일 (이름, 성적정보를 3번씩 입력받아서 3번씩 저장하고, 3번씩 출력)
// for문이 실행되면, index가 0일 때, name, kor, eng, math 변수가 생기고 거기에 값들이 입력됨
- Score score = new Score();
// 입력된 성적정보를 저장할 Score객체 생성
// Score객체 안에는 변수(name, kor, eng, math, total, average, isPassed)와 메소드(setScore, processScore, printScore)가 있음
// Score객체의 주소값(0x2222)을 score변수에 저장
// 각자 다른 새로운 객체를 만들어야 하기 때문에 for문 안에 있어야 함 - score.setScore(name, kor, eng, math);
// score가 참조하고 있는 Score객체의 setScore() 메소드를 실행해서 메소드의 매개변수를 통해 값을 입력받고, 생성된 Score객체의 멤버변수에 그 값을 대입시킨다.
// 이 setScore의 매개변수명은 이 클래스 내에서만 동일하면 됨 - scores[index] = score;
}
// 배열에 Score객체를 저장하기
// index=0이면, scores배열의 [0]번째 인덱스에 score값(0x2222 = Score객체의 주소값)이 대입
// for문이 종료되면, 그 안에 쓰였던 변수 score, 객체 Score등이 모두 사라짐
// for문이 또 돌아 -> 또다른 Score객체, index=1, name, kor, eng, math변수가 생기고 값들이 입력됨
// 이 객체의 주소값(0x3333)이 또다른 score변수에 저장되어 1번째 인덱스가 이 새로운 객체를 참조
// 주소값끼리 참조했기 때문에, for문이 종료되면 안에 있는 score변수는 없어지고, 배열객체를 참조하는 scores변수만 남음
- Score score = new Score();
- for(Score score : scores) {
score.processScore();
score.printScore();
}
// score != score (score변수는 for문 안에서 종료됐음)
// scores변수에 있는 내용을 하나씩 뽑아서 새로운 변수 score에 저장
// 먼저 scores 배열에 있는 첫번째 값(0x2222 주소값)을 score변수에 저장
// 이 score변수가 가리키는 객체(0x2222주소값을 가지는 Score객체) 안에서의 processScore() 메소드를 실행
// 다음 scores 배열의 두번째 값 (0x3333주소값)이 score변수에 저장
// score가 가리키는 객체 (0x3333 주소값을 가지는 Score객체) 안에서의 processScore() 메소드 실행
* 값을 담는 객체는 값의 개수만큼 객체를 생성 !!! ( 객체 3개짜리 배열 -> 객체 3개 생성 )
- 주문 상품정보를 입력받아서 출력하는 프로그램 만들어보기
public class OrderItem {
필드 상품명, 제조사, 가격, 구매수량, 구매가격
메소드 - 구매상품정보(상품명, 제조사, 가격, 구매수량)을 전달받아서 필드에 대입하는 기능
* 구매상품정보를 전달받아서 필드에 대입하는 수행문
* 가격과 구매수량을 곱해서 구매가격을 계산하고 필드에 대입하는 수행문
- 구매상품정보를 출력하는 기능
* 상품명, 제조사, 가격, 구매수량, 구매가격을 출력하는 수행문
}
public class OrderItemApp1 {
public static void main(String[] args) {
// 키보드 입력을 읽어오는 KeyboardReader 객체 생성
// 구매상품정보를 3개 저장하는 배열객체 생성
// 반복문
상품명, 제조사, 가격, 구매수량을 입력받아서 변수에 저장한다.
구매상품정보를 저장하는 객체를 생성한다.
구매상품정보객체의 구매상품정보 대입기능을 실행하는 메소드를 실행해서 객체에 값을 저장한다.
구매상품정보객체의 주소값을 배열에 순서대로 대입한다.
// 반복문 끝
// 총 구매상품가격을 저장하는 변수를 생성하고 0으로 초기화한다.
// 반복문 시작 - 향상된 for문 사용
구매상품정보객체의 상품정보 출력기능을 실행해서 구매상품정보를 화면에 출력한다.
구매상품정보객체의 구매가격을 총 구매상품가격변수에 누적시킨다.
// 반복문 끝
// 총 구매상품가격을 출력한다.
- OrderItem 클래스 생성
package day8;
public class OrderItem {
// 필드 생성
String name; // 상품명
String brand; // 제조사
int price; // 가격
int amount; // 구매수량
int orderPrice; // 구매가격
// 메소드 생성
/*
* 1. 구매상품정보를 전달받아서 필드에 대입하는 메소드
* 접근제어: public
* 반환타입: void
* 메소드명: setOrder
* 매개변수: String productName, String brand, int price, int amount
*/
public void setOrder(String productName, String makeBrand, int productPrice, int orderAmount) {
name = productName;
brand = makeBrand;
price = productPrice;
amount = orderAmount;
orderPrice = price*amount;
}
/*
* 2. 출력하는 메소드
* 접근제어: public
* 반환타입: void
* 메소드명: printOrder
* 매개변수: 없음
*/
public void printOrder() {
System.out.println("<구매상품정보>");
System.out.println("상품명: "+name);
System.out.println("제조사: "+brand);
System.out.println("가격: "+price);
System.out.println("구매수량: "+amount);
System.out.println("구매가격: "+orderPrice);
}
}
- OrderItemApp1 객체 생성
package day8;
import utils.KeyboardReader;
public class OrderItemApp1 {
public static void main(String[] args) {
KeyboardReader keyboard = new KeyboardReader(); // 키보드 입력 객체
OrderItem[] order = new OrderItem[3]; //구매상품정보 3개를 저장하는 배열객체
for(int index=0; index<order.length; index++) {
System.out.print("상품명: ");
String name = keyboard.getString();
System.out.print("제조사: ");
String brand = keyboard.getString();
System.out.print("가격: ");
int price = keyboard.getInt();
System.out.print("구매수량: ");
int amount = keyboard.getInt();
OrderItem orderItem = new OrderItem(); //객체 생성
orderItem.setOrder(name, brand, price, amount);
order[index] = orderItem;
System.out.println("["+(index+1)+"] 번째 구매상품이 저장되었습니다. \n");
}
int totalOrderPrice = 0;
for(OrderItem orderitem : order) {
orderitem.printOrder();
totalOrderPrice += orderitem.orderPrice; //orderitem이 가리키는 객체의 orderPrice를 누적합계
System.out.println();
}
System.out.println("총 구매가격: "+totalOrderPrice);
}
}
상품명: 아이폰
제조사: 애플
가격: 150
구매수량: 2
[1] 번째 구매상품이 저장되었습니다.
상품명: 태블릿
제조사: 삼성
가격: 200
구매수량: 1
[2] 번째 구매상품이 저장되었습니다.
상품명: 애플워치
제조사: 엘지
가격: 110
구매수량: 5
[3] 번째 구매상품이 저장되었습니다.
<구매상품정보>
상품명: 아이폰
제조사: 애플
가격: 150
구매수량: 2
구매가격: 300
<구매상품정보>
상품명: 태블릿
제조사: 삼성
가격: 200
구매수량: 1
구매가격: 200
<구매상품정보>
상품명: 애플워치
제조사: 엘지
가격: 110
구매수량: 5
구매가격: 550
총 구매가격: 1050
'수업내용 > Java' 카테고리의 다른 글
[2022.09.16.금] 생성자, this (0) | 2022.09.17 |
---|---|
[2022.09.15.목] 메소드의 매개변수, 반환타입, 중복정의 (0) | 2022.09.16 |
[2022.09.13.화] 객체지향(클래스,객체) (0) | 2022.09.13 |
[2022.09.08.목] 배열 (0) | 2022.09.08 |
[2022.09.07.수] switch문, 반복문 (0) | 2022.09.07 |