메서드 만드는 법
자바로 함수를 정의하고 사용하는 방법
static 반환값의자료형 함수명(매개변수){ return 반환값 }
static void 함수명(매개변수){반환값이 없을 경우에는 자료형 자리에 void }
함수의 매개변수
print(2, 3.0f, 'a'); | void print(int a, float b, char c) |
int[] lotto = new int[3]; print(3, 5.3f, lotto); |
void print(int a, float b, int[] lotto) |
char[][] names = new char[3][10]; double cnt = print(true, 4.0, names); |
print(boolean a, double b, char[][] names){ return 2.2; } |
구조적인 프로그래밍 만드는 방식
Bottom Up 방식
절차프로그래밍을 기능별로 함수를 만들어서 코드를 해체 하는 방식
절차프로그래밍
package newlecture.structuredProgramming.ex01.성적입력부분나누기;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
int[] kors = new int[3];
int total = 0;
float avg;
int menu;
boolean keepLoop = true;
Scanner scan = new Scanner(System.in);
while(keepLoop)
{
System.out.println("┌──────────────────┐");
System.out.println("│ 메인 메뉴 │");
System.out.println("└──────────────────┘");
System.out.println("\t1. 성적입력 ");
System.out.println("\t2. 성적출력 ");
System.out.println("\t3. 종료 ");
System.out.println("\t선택> ");
menu = scan.nextInt();
switch(menu)
{
case 1:
System.out.println("┌──────────────────┐");
System.out.println("│ 성적 입력 │");
System.out.println("└──────────────────┘");
System.out.println();
for(int i = 0; i < 3; i++)
{
do
{
System.out.printf("국어%d : ", i+1);
kors[i] = scan.nextInt();
if(kors[i] < 0 || 100 < kors[i])
{
System.out.println("국어성적은 0~100까지의 범위만 입력이 가능합니다.");
}
}while(kors[i]<0 || 100 < kors[i]);
}
System.out.println("────────────────────────");
break;
case 2:
for(int i = 0; i < 3; i++)
{
total += kors[i];
}
avg = total / 3.0f;
System.out.println("┌──────────────────┐");
System.out.println("│ 성적 출력 │");
System.out.println("└──────────────────┘");
System.out.println();
for(int i = 0; i < 3; i++)
{
System.out.printf("국어 %d : %3d\n", 3-i, kors[i]);
}
System.out.printf("총점 : %3d\n", total);
System.out.printf("평균 : %6.2f\n", avg);
System.out.println("────────────────────────");
break;
case 3:
System.out.println("Bye~~");
keepLoop = false;
break;
default:
System.out.println("잘못된 값을 입력하셨습니다. 메뉴는 1~3까지입니다.");
}
}
}
}
bottom up
package newlecture.structuredProgramming.ex01.성적입력부분나누기;
/** structuredProgramming - Bottom Up 방식
* 절차프로그래밍을 구조적으로 나누는 방식
* main 함수에서 메뉴입력 코드, 성적입력 코드, 성적출력 코드 각자 함수로 분리
*
* 함께 사용하던 배열 kors 분리 하니 오류 발생
* => 전역자원(전역변수)으로 모든 함수 밖에 두기
* (scanner 같이 굳이 공유 안해도 되는 것은 각자 쓰는 것이 좋음)
* (total, avg 같이 main함수에서는 사용하지 않고 특정 함수에서만 사용하는 것도 전역변수로 만들지 않음)
*
* 전역변수 만드는 법 : static 자료형 변수명
*
*/
import java.util.Scanner;
public class StructuredProgram {
static int[] kors = new int[3];
static int menu;
public static void main(String[] args) {
boolean keepLoop = true;
while(keepLoop){
메뉴입력();
switch(menu){
case 1:
성적입력();
break;
case 2:
성적출력();
break;
case 3:
System.out.println("Bye~~");
keepLoop = false;
break;
default:
System.out.println("잘못된 값을 입력하셨습니다. 메뉴는 1~3까지입니다.");
}
}
}
static int 메뉴입력() {
Scanner scan = new Scanner(System.in);
System.out.println("┌──────────────────┐");
System.out.println("│ 메인 메뉴 │");
System.out.println("└──────────────────┘");
System.out.println("\t1. 성적입력 ");
System.out.println("\t2. 성적출력 ");
System.out.println("\t3. 종료 ");
System.out.println("\t선택> ");
menu = scan.nextInt();
return menu;
}
static void 성적출력() {
int total = 0;
float avg;
for(int i = 0; i < 3; i++)
total += kors[i];
avg = total / 3.0f;
System.out.println("┌──────────────────┐");
System.out.println("│ 성적 출력 │");
System.out.println("└──────────────────┘");
System.out.println();
for(int i = 0; i < 3; i++)
System.out.printf("국어 %d : %3d\n", 3-i, kors[i]);
System.out.printf("총점 : %3d\n", total);
System.out.printf("평균 : %6.2f\n", avg);
System.out.println("────────────────────────");
}
static void 성적입력() {
Scanner scan = new Scanner(System.in);
System.out.println("┌──────────────────┐");
System.out.println("│ 성적 입력 │");
System.out.println("└──────────────────┘");
System.out.println();
for(int i = 0; i < 3; i++){
do {
System.out.printf("국어%d : ", i+1);
kors[i] = scan.nextInt();
if(kors[i] < 0 || 100 < kors[i]){
System.out.println("국어성적은 0~100까지의 범위만 입력이 가능합니다.");
}
}while(kors[i]<0 || 100 < kors[i]);
}
System.out.println("────────────────────────");
}
}
Top Down 방식
package newlecture.structuredProgramming.ex02_탑다운예제;
/** structuredProgramming - Top down 방식
*
* 구조를 먼저 짜고 코드를 구현하는 방식
*
*/
public class Program {
public static void main(String[] args) {
int [][] lottos = null;
int menu;
boolean running = true;
while(running)
{
menu = inputMenu();
switch(menu) {
case 1:
lottos = createLottosAuto();
break;
case 2:
lottos = createLottosMenual();
break;
case 3:
printLottos(lottos);
break;
case 4:
running = false;
break;
default:
}
}
}
private static void printLottos(int[][] lottos) {
// TODO Auto-generated method stub
}
private static int[][] createLottosMenual() {
// TODO Auto-generated method stub
return null;
}
private static int[][] createLottosAuto() {
// TODO Auto-generated method stub
return null;
}
private static int inputMenu() {
// TODO Auto-generated method stub
return 0;
}
}
'프로그래밍언어 > JAVA' 카테고리의 다른 글
[JAVA] 함수 Overloading - 국영수 성적 입출력 프로그램 (0) | 2021.11.25 |
---|---|
[JAVA] 구조체 배열 가변 길이 추가 - 국영수 성적 입출력 프로그램 (0) | 2021.11.24 |
[JAVA] 자바의 입출력 (0) | 2021.11.21 |
[JAVA] 자바의 연산자와 제어문 (0) | 2021.11.21 |
[JAVA] 자바 변수와 자료형 (0) | 2021.11.20 |