1. 메소드
: 이름()
단, 키워드()는 메소드가 아니다.
2. 메소드 구성 요소
3. 메소드 선언
(1)리턴타입 (2)메소드명(자료형 (3)매개변수, ...) {
(4)실행할 문장;
(5)return 리턴값;
}
(1) 리턴값의 타입 작성, 없으면 void로 작성
(2) 동사로 작성한다(연필(매개변수)을 쓴다(메소드))
(3) 생략이 가능하다. 외부에서 들어올 값이 있다면 반드시 적는다.
(4) 생략이 가능하다.
(5) 생략이 가능하다.
4. 메소드 사용
메소드명(값, ...);
메소드명();
5. 메소드 주의사항
: 메소드 선언시 반드시 메소드 밖에서 선언하고,
메소드 사용시 반드시 메소드 안에서 사용한다.
6. 메소드 선언 순서
(문제) 두 정수의 덧셈 메소드 구현
① 메소드 이름을 생각한다.
plus, add, sum, ....
add() {}
② 매개변수를 생각한다.
add(int num1, int num2) {}
③ 실행할 문장을 생각한다.
add(int num1, int num2) {
int result = num1 + num2;
}
④ 리턴값을 생각한다
add(int num1, int num2) {
int result = num1 + num2;
return result;
}
⑤ 리턴타입을 결정한다.
int add(int num1, int num2) {
int result = num1 + num2;
return result;
}
7. 에러는 심각한 오류, 예외는 컴퓨터에 지장이 없는 가벼운 오류
: 주로 실무에서는 에러와 예외를 구분하지 않고 오류라고 말한다
8. 오늘 배운 소스 코드
1) Nike
package day15;
import javax.swing.JOptionPane;
public class Nike {
public static void main(String[] args) {
//강남점, 홍대점, 잠실점
//일반점, 키즈점
//강남점 일반점 매출액을 입력하세요.
//지점별 총, 평균 매출액(강남, 홍대, 잠실)
//연령병 총, 평균 매출액(일반, 키즈)
//나이키 총, 평균 매출액
//평균 매출액보다 높은 매장은 인센티브 매장으로 출력
//대화상자 (JOptionPane) 사용
//매출액은 만원 단위, 평균은 백원 단위
String[] branchName = {"강남점", "홍대점", "잠실점"};
String[] ageName = {"일반점", "키즈점"};
int[][] arrIncome = new int[2][3];
int[] arBranchTotal = new int[3];
double[] arBranchAvg = new double[3];
int[] arAgeTotal = new int[2];
double[] arAgeAvg = new double[2];
int total = 0;
double avg = 0.0;
int length = 0;
String msg = "";
boolean check = false;
for (int i = 0; i < arrIncome.length; i++) {
//나이키 평균 매출액 계산을 위한 총 배열의 길이 계산 필요
length += arrIncome[i].length;
//사용자에게 지점별, 연령별 매출액 입력받기
for (int j = 0; j < arrIncome[i].length; j++) {
arrIncome[i][j] = Integer.parseInt(JOptionPane.showInputDialog(branchName[j] + " " +
ageName[i] + " 매출액을 입력하세요[단위 : 만원]"));
//나이키 총 매출액
total += arrIncome[i][j];
//지점별 총 매출액
arBranchTotal[j] += arrIncome[i][j];
//연령별 총 매출액
arAgeTotal[i] += arrIncome[i][j];
}
//연령별 평균 매출액(2번 반복)
arAgeAvg[i] = Double.parseDouble(
String.format("%.2f", (double)arAgeTotal[i] / arrIncome[i].length));
}
//지점별 평균 매출액(3번 반복)
for (int i = 0; i < arBranchAvg.length; i++) {
arBranchAvg[i] = Double.parseDouble(
String.format("%.2f", (double)arBranchTotal[i] / arrIncome.length));
}
//나이키 평균 매출액
avg = Double.parseDouble(String.format("%.2f", (double)total / length));
//한 번에 값을 출력하기 위해 출력이 필요한 값을 msg에 누적 저장==================
//지점별 총, 평균 매출액(강남, 홍대, 잠실)
for (int i = 0; i < arBranchTotal.length; i++) {
msg += branchName[i] + " 총 매출액 : " + arBranchTotal[i] + " 만원\n" +
branchName[i] + " 평균 매출액 : " + arBranchAvg[i] + " 만원\n";
}
//연령병 총, 평균 매출액(일반, 키즈)
for (int i = 0; i < arAgeTotal.length; i++) {
msg += ageName[i] + " 총 매출액 : " + arAgeTotal[i] + " 만원\n" +
ageName[i] + " 평균 매출액 : " + arAgeAvg[i] + " 만원\n";
}
//나이키 총 매출액, 평균 매출액
msg += "나이키 총 매출액 : " + total + "만원\n";
msg += "나이키 평균 매출액 : " + avg + "만원\n";
msg += "★인센티브 매장★\n";
for (int i = 0; i < arrIncome.length; i++) {
for (int j = 0; j < arrIncome[i].length; j++) {
if(arrIncome[i][j] > avg) {
//입력한 매출액이 나이키 평균 매출액보다 큰 경우
//인센티브 매장 누적 저장 후
//check를 true로 변경
//check는 인센티브 매장 유무 확인을 위한 Flag
msg += branchName[j] + " " + ageName[i] + "\n";
check = true;
}
}
}
if(!check) {
//check가 false일때
msg += "없음";
}
//==============================================================================
JOptionPane.showMessageDialog(null, msg);
}
}
2) MethodTest
package day15;
public class MethodTest {
//따로 선언없이 바로 메인메소드에 사용하고 싶다면 리턴타입 앞에 static을 붙여주면 됨
//그럼 컴파일시 메인 메소드와 함께 가장 먼저 메모리에 할당되기 때문에 바로 사용이 가능함
//f(x) = 2x+1
int f(int x){
return 2*x+1;
}
//메인메소드 : 실행프로그램을 만들어주는 역할
//그리고 컴파일시 가장 먼저 자동 사용됨
//static : 컴파일시 가장 먼저 메모리에 할당됨.
public static void main(String[] args) {
//메소드 선언시 static을 붙여줌으로써 바로 메모리에 할당해도 되나
//메인메소드 안에서 메소드의 소속을 알려줌으로서
//메인메소드가 실행할 수 있겠끔 메모리에 할당시켜주는 것임
MethodTest mt = new MethodTest();
int result = mt.f(10);
System.out.println(result);
}
}
3) MainTest
package day15;
public class MainTest {
public static void main(String[] args) {
if(args.length == 0) {
System.out.println("None");
}else {
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
}
** 메인 메서드의 매개변수를 접근하려면 밖에서 해야함 **
** 네트워크에서 cmd 창으로 IP주소를 넘겨받을때 사용(즉, 메인메소드는 주로 네트워크에서 사용) **
** args는 보통 IP주소나 상대방의 네트워크 포트번호 같은 것들이 담겨져서 주로 날라온다 **
** 기존에 JDK, JRE 경로 설정하는 과정에서 Program Files를 삭제하는 이유가
cmd 창에서 공백의 역할이 매우 중요하여 작업 중에 문제가 생길 수 있기 때문이다 **
'웹_프론트_백엔드 > 단과' 카테고리의 다른 글
[단과_JAVA] 2020.02.05 (0) | 2020.02.06 |
---|---|
[단과_Python] 2020.02.04 (0) | 2020.02.05 |
[단과_Python] 2020.02.03 (0) | 2020.02.04 |
[단과_JAVA] 2020.02.03 (0) | 2020.02.04 |
[단과_Python] 2020.01.31 (0) | 2020.02.03 |