1 팁
1.
2 복습
1.
스킵
3 이론
1. 매개 변수
2. 파라미터 테스트 1
Data { int x; } : 인스턴스 변수
사용법 : 객체 선언 -> 참조변수.인스턴스변수
3. 파라미터 테스트 2
4 실습
1. 객체 불러오기 실습
* C0517_01 (main)
package j0517;
public class C0517_01 {
public static void main(String[] args) {
// Card 클래스의 객체를 선언하고 생성합니다.
Card c1 = new Card();
// c1 객체의 kind, number, width 멤버 변수에 값을 할당합니다.
c1.kind = "Heart";
c1.number = 7;
c1.width=500;
c1.number = 25; // 이미 할당된 number 변수에 값을 덮어씁니다.
// Card 클래스의 객체를 또 다른 참조 변수로 선언하고 생성합니다.
Card c2 = new Card();
// c2 객체의 kind, number 멤버 변수에 값을 할당합니다.
c2.kind = "Spade";
c2.number = 4;
// Card 클래스의 객체를 또 다른 참조 변수로 선언하고 생성합니다.
Card c3 = new Card();
// c1 객체의 kind, number, width, height 멤버 변수의 값을 출력합니다.
System.out.println("c1 카드종류 : "+c1.kind);
System.out.println("c1 카드숫자 : "+c1.number);
System.out.println("c1 가로길이 : "+Card.width);
System.out.println("c1 세로길이 : "+Card.height);
System.out.println("-----------------------");
// c2 객체의 kind, number, width, height 멤버 변수의 값을 출력합니다.
System.out.println("c2 카드종류 : "+c2.kind);
System.out.println("c2 카드숫자 : "+c2.number);
System.out.println("c2 가로길이 : "+Card.width);
System.out.println("c2 세로길이 : "+Card.height);
System.out.println("-----------------------");
// c3 객체의 width 멤버 변수의 값을 출력합니다.
System.out.println("c3 가로길이 : "+Card.width);
}
}
* Card (클래스)
package j0517;
public class Card {
// 카드의 종류를 저장하는 문자열 변수
String kind;
// 카드의 번호를 저장하는 정수 변수
int number;
// 카드의 너비를 저장하는 정수 상수
static int width = 100;
// 카드의 높이를 저장하는 정수 상수
static int height = 250;
}
2. 객체 개념을 활용해서 계산기 기능
package j0517; // 이 코드는 j0517 패키지에 속합니다.
import java.util.Scanner; // Scanner 클래스를 사용합니다.
public class C0517_02 { // C0517_02 클래스입니다.
public static void main(String[] args) { // 프로그램의 시작점입니다.
// C0517_02 클래스의 인스턴스를 생성합니다.
C0517_02 c = new C0517_02();
// Scanner 클래스의 인스턴스를 생성합니다.
Scanner scan = new Scanner(System.in);
// int형 변수 num1을 선언하고 10으로 초기화합니다.
int num1 = 10;
// int형 변수 num2를 선언하고 5로 초기화합니다.
int num2 = 5;
// 객체선언
// 클래스명 참조변수명 = new 클래스명();
// Card c1 = new Card();
// 두 수를 입력받아 더하기 결과값을 출력하시오.
//System.out.println("1번째 숫자를 입력하세요.");
//num1 = scan.nextInt();
//System.out.println("2번째 숫자를 입력하세요.");
//num2 = scan.nextInt();
// int형 배열 num을 선언하고 크기를 2로 설정합니다.
int[] num = new int[2];
// for 반복문을 사용하여 num 배열의 요소를 입력받습니다.
for (int i = 0; i < 2; i++) {
// 사용자로부터 입력받을 숫자의 위치를 출력합니다.
System.out.println((i + 1) + "번째 숫자를 입력하세요.");
// Scanner 클래스의 nextInt 메소드를 사용하여 사용자로부터 정수를 입력받아 num 배열에 저장합니다.
num[i] = scan.nextInt();
}
// 더하기, 빼기, 곱하기, 나누기 메소드 호출
// add 메소드를 호출하여 두 수의 합을 구하고, 그 결과를 result1 변수에 저장합니다.
int result1 = c.add(num[0], num[1]);
// sub 메소드를 호출하여 두 수의 차를 구하고, 그 결과를 result2 변수에 저장합니다.
int result2 = c.sub(num[0], num[1]);
// multi 메소드를 호출하여 두 수의 곱을 구하고, 그 결과를 result3 변수에 저장합니다.
int result3 = c.multi(num[0], num[1]);
// div 메소드를 호출하여 두 수를 나눈 몫을 구하고, 그 결과를 result4 변수에 저장합니다.
int result4 = c.div(num[0], num[1]);
// 두 수의 합을 출력합니다.
System.out.println("두 수의 더하기 : " + result1);
// 두 수의 차를 출력합니다.
System.out.println("두 수의 빼기 : " + result2);
// 두 수의 곱을 출력합니다.
System.out.println("두 수의 곱하기 : " + result3);
// 두 수의 나누기를 출력합니다.
System.out.println("두 수의 곱하기 : " + result4 );
}
// 더하기 메소드
int add(int num1, int num2) {
// 두 수를 더한 결과를 구합니다.
int result = num1 + num2;
// 결과를 반환합니다.
return result;
}
// 빼기 메소드 sub
int sub(int num1, int num2) {
// 두 수의 차를 구한 결과를 구합니다.
int result = num1 - num2;
// 결과를 반환합니다.
return result;
}
//
//곱하기 메소드 multi
int multi(int num1,int num2) {
int result = num1 * num2;
return result;
}
//나누기 메소드 div
int div(int num1,int num2) {
int result = num1 / num2;
return result;
}
}
3. 계산기 (나누기 기능 추가)
package j0517;
import java.util.Scanner;
public class C0517_03 {
// 3개의 숫자를 입력받아 합계를 구하시오.
// add 메소드를 사용하시오.
public static void main(String[] args) {
C0517_03 c = new C0517_03();
Scanner scan = new Scanner(System.in);
int num1 = 1;
int num2 = 1;
int num3 = 1;
int[] num = new int[3];
for (int i = 0; i < 3; i++) {
System.out.println((i + 1) + "번째 숫자를 입력하세요");
num[i] = scan.nextInt();
}
// add, sub, multi, div
int result1 = c.add(num[0], num[1], num[2]);
int result2 = c.sub(num[0], num[1], num[2]);
int result3 = c.multi(num[0], num[1], num[2]);
int result4 = c.div(num[0], num[1], num[2]);
System.out.println("두 수의 더하기 : " + result1);
System.out.println("두 수의 빼기 : " + result2);
System.out.println("두 수의 곱하기 : " + result3);
System.out.println("두 수의 나누기 : " + result4);
}
// 기능 선언 // add, sub, multi, div
int add(int num1, int num2, int num3) {
int result = num1 + num2 + num3;
return result;
}
int sub(int num1, int num2, int num3) {
int result = num1 - num2 - num3;
return result;
}
int multi(int num1, int num2, int num3) {
int result = num1 * num2 * num3;
return result;
}
int div(int num1, int num2, int num3) {
int result = num1 / num2 / num3;
return result;
}
}
4. 가장 큰 수 찾기 (3개 찾기)
package j0517;
import java.util.Scanner;
public class C0517_04 {
// 3개의 숫자를 입력받아 가장 큰 수를 출력하시오.
// 인스턴스 메소드 numMax() 활용
public static void main(String[] args) {
C0517_04 c1 = new C0517_04();
int[] num = new int[3];
int num1 = 0, num2 = 0, num3 = 0;
Scanner scan = new Scanner(System.in);
// 값 여러번 출력
for (int i = 0; i < num.length; i++) {
System.out.println((i + 1) + "번째 값을 입력하세요");
num[i] = scan.nextInt();
}
int result = c1.numMax(num[0], num[1], num[2]);
System.out.println("가장 큰 수 : " + result);
}
int numMax(int num1, int num2, int num3) {
if (num1 > num2 || num2 > num3) {
int result = num1;
return result;
} else if (num1 < num2 || num2 < num3) {
int result = num3;
return result;
} else {
int result = num2;
return result;
}
}
}
5. 평균 구하기
package j0517;
import java.util.Scanner;
public class C0517_05 {
// 3개의 숫자를 입력받아, 평균을 출력하세요
// average() 함수
// return은 string으로 (합격, 불합격)
public static void main(String[] args) {
C0517_05 c1 = new C0517_05();
int[] num = new int[3];
int num1 = 0, num2 = 0, num3 = 0;
Scanner scan = new Scanner(System.in);
// 값 여러번 출력
for (int i = 0; i < num.length; i++) {
System.out.println((i + 1) + "번째 값을 입력하세요");
num[i] = scan.nextInt();
}
double result = c1.average(num[0], num[1], num[2]);
System.out.println(result + "입니다.");
}
double average(int num1, int num2, int num3) {
double result = (num1 + num2 + num3) / 3.0;
return result;
}
}
6. 파라미터 테스트 1
* C0517_06 (main)
package j0517;
import java.util.Scanner;
public class C0517_06 {
public static void main(String[] args) {
Data d = new Data();
d.x = 10;
System.out.println("d.x : " + d.x);
System.out.println("------------");
change(d.x);
System.out.println("change d.x : " + d.x);
}
static void change(int x) {
x = 1000;
System.out.println("x : " + x);
}
}
// void라고 적으면 안돌려준다는 이야기
* Data (서브)
package j0517;
public class Data {
int x;
}
7. 파라미터 테스트 2
* C0517_07 (main)
package j0517;
import java.util.Scanner;
public class C0517_07 {
public static void main(String[] args) {
Tv t1 = new Tv();
Tv t2 = new Tv();
t1.channel = 7;
System.out.println("Tv t1 채널" + t1.channel);
t2.channel = 8;
System.out.println("Tv t2 채널" + t2.channel);
t2 = t1;
System.out.println("t2 채널" + t2.channel);
t2.channel = 0;
}
}
* Tv (sub)
package j0517;
public class Tv {
String color;
boolean power;
int channel;
int volume;
void power() {
power = !power;
}
void channelUp() {
if(channel>=999) {
channel=1;
return;
}
channel++;
}
void channelDown() {
if(channel<=1) {
channel=999;
return;
}
channel--;
}
void volumeUp() {
if(volume>=100) {
volume=100;
return;
}
volume++;
}
void volumeDown() {
if(volume<=0) {
volume=0;
System.out.println("볼륨은 0이하로는 내려가지 않습니다.");
return;
}
volume--;
}
}
//static num[] 대신 void로(주소값)
8. 학생 프로그램
* Stumain
package Stu;
import java.util.Scanner;
public class Stumain {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// TODO Auto-generated method stub
// 1. 성적입력
// 2. 성적출력
// 3. 성적수정
// 4. 등수처리
// 5. 학생성적검색
// 0. 프로그램종료
// 이름,국어,영어,수학, 합계,평균 - 10명
int choice = 0; // 선택 번호
int count = 0; // 학생 수
String[] s = { "이름", "국어", "영어", "수학", "합계", "평균", "등수" };
String[] name = new String[10];
String searchName = "";
int[][] score = new int[10][4]; //
double[] avg = new double[5];
int[] rank = new int[10]; // 등수
int chk = 0;// 존재유무(학생 존재의 유무)
while (true) {
System.out.println("[ 학생성적처리 프로그램 ]");
System.out.println("1. 성적입력");
System.out.println("2. 성적출력");
System.out.println("3. 성적수정");
System.out.println("4. 등수처리");
System.out.println("5. 학생검색");
System.out.println("0. 프로그램종료");
System.out.println("-----------------------");
System.out.println("원하는 번호를 입력하세요.");
choice = scan.nextInt();
switch (choice) {
case 1: //성적입력
break;
}
}//while
}//main
}//class
* Student
package Stu;
public class Student {
static String[] title = { "이름", "국어", "영어", "수학", "합계", "평균" };
String name;
int kor;
int eng;
int math;
int total;
double avg;
int rank;
void sum() {
total = kor + eng + math;
}
void avg() {
avg = total/3.0;
}
}
5 문제풀이
1. 3개의 숫자를 입력 받아 작은 수부터 순차적으로 출력하시오.
//1. 3개의 숫자를 입력 받아 작은 수부터 순차적으로 출력하시오.
// calculate() 메소드
package j0517;
import java.util.Scanner;
public class C0517_08 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] arr = new int[3];
for (int i = 0; i < arr.length; i++) {
System.out.println("숫자 입력하세요");
arr[i] = scan.nextInt();
}
// //배열정렬
// Arrays.sort(arr);
calculate(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
static void calculate(int[] arr) {
// arr[0] = Math.min(Math.min(arr[0], arr[1]), arr[2]); // 이렇게 하면 안됨
int min = Math.min(Math.min(arr[0], arr[1]), arr[2]);
int max = Math.max(Math.max(arr[0], arr[1]), arr[2]);
int middle = (arr[0] + arr[1] + arr[2]) - max - min;
arr[0] = min;
arr[1] = middle;
arr[2] = max;
}
}
// 쓰지 말기
// package j0517;
// import java.util.Arrays;
// import java.util.Scanner;
// public class C0517_08 {
// public static void main(String[] args) {
// Scanner scan = new Scanner(System.in);
// int[] arr = new int[3];
// for (int i = 0; i < arr.length; i++) {
// System.out.println("숫자 입력하세요");
// arr[i] = scan.nextInt();
// }
// //배열정렬
// Arrays.sort(arr);
// for (int i = 0; i < arr.length; i++) {
// System.out.println(arr[i]+" ");
// }
// System.out.println();
// }
// }
// * 인공지능
// package j0517;
// import java.util.Scanner;
// public class C0517_08 {
// public static void main(String[] args) {
// Scanner scan = new Scanner(System.in);
// System.out.print("3개의 숫자를 입력하세요: ");
// int num1 = scan.nextInt();
// int num2 = scan.nextInt();
// int num3 = scan.nextInt();
// int min = num1;
// if (num2 < min) {
// min = num2;
// }
// if (num3 < min) {
// min = num3;
// }
// System.out.print(min);
// if (num1 != min) {
// System.out.print(" " + num1);
// }
// if (num2 != min) {
// System.out.print(" " + num2);
// }
// if (num3 != min) {
// System.out.print(" " + num3);
// }
// }
// }
* 핵심
- 메소드 쓰는 이유 : 소스 중복을 막기 위해서
* 0517 실습 링크
728x90
반응형
LIST
'배운 책들 정리 > 자바 완전 정복' 카테고리의 다른 글
자바의 정석 6-3 - 객체지향개념1 (0) | 2023.05.22 |
---|---|
자바 완전 정복 6-2 - 객체지향개념 2 (0) | 2023.05.18 |
자바의 정석 5,6 - 배열, 객체 (수정중) (0) | 2023.05.17 |
자바의 정석 4,5 - 조건문,반복문,배열 2 (1) | 2023.05.13 |
자바의 정석 4,5 - 조건문,반복문,배열 (0) | 2023.05.11 |