01. 배열을 역순으로 바꿔서 출력하기
º 배열의 원소(요소) 수를 입력 받고 배열을 선언하여 랜덤으로 숫자를 저장한 후 배열의 모든 요소를 역순으로 바꿔서 출력
import java.util.Random;
import java.util.Scanner;
public class ReverseArray {
public static void main(String[] args) {
Random rand = new Random();
Scanner stdIn = new Scanner(System.in);
System.out.print("요소 수: ");
int n = stdIn.nextInt(); //요소 수 입력
int [] a = new int[n]; //배열을 선언
for(int i = 0; i < n; i++) {
a[i] = 10 + rand.nextInt(90);
System.out.println("a[" + i + "] = " + a[i]);
}
for(int i = 0; i < n/2; i++) {
int t = a[i];
a[i] = a[n-i-1];
a[n-i-1] = t;
}
System.out.println("요소를 역순으로 출력");
for(int i = 0; i < n; i++)
System.out.println("a[" + i + "] =" + a[i]);
stdIn.close();
}
}
02. 배열을 반환하는 메소드
º 모든 요소가 인덱스와 같은 값을 갖는 배열을 생성하고 배열을 반환하는 메소드를 가진 프로그램
import java.util.Scanner;
public class ReturnArray {
static int[] iArray(int n) {
int[] a = new int[n]; //요소(원소) 수 n의 배열
for(int i=0; i<n; i++)
a[i] = i;
return a;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("요소(원소) 수 입력: ");
int n = s.nextInt(); //원소 수
int [] x = iArray(n); //원소 수 n의 배열
for(int i=0; i<n; i++)
System.out.println("x[" + i + "] = " + x[i]);
s.close();
}
}
03. 자동차 클래스 작성
º 다음의 데이터 필드를 가진 자동차 클래스를 작성하시오.
- 데이터 필드 : 이름, 너비, 높이, 길이, 현재 위치의 X좌표, 현재 위치의 Y좌표, 남은 연료
- 생성자 : 현재 위치의 좌표를 원점(0,0)으로 설정
- 메소드 설정
-> 현재 위치의 X좌표를 조사하는 메소드
-> 현재 위치의 Y좌표를 조사하는 메소드
-> 남은 연료 조사 메소드
-> 자동차의 사양을 표시하는 메소드
-> 자동차를 움직이는 메소드
<3-1> Car 라이브러리 클래스
class Car {
private String name; //이름
private int width; //너비
private int height; //높이
private int length; //길이
private double x; //현재 위치 X좌표
private double y; //현재 위치 Y좌표
private double fuel; //남은 연료
Car(String name, int width, int height, int length, double fuel) {
this.name = name; this.width = width; this.height = height;
this.length = length; this.fuel = fuel;
x = y = 0.0;
}
double getX() {return x;} //현재 위치 X좌표 취득
double getY() {return y;} //현재 위치 Y좌표 취득
double getFuel() {return fuel;} //남은 연료 취득
void show() {
System.out.println("이름: " + name);
System.out.println("너비: " + width + "높이: " + height + "길이: " + length);
}
boolean move(double dx, double dy) {
double dist = Math.sqrt(dx * dx + dy * dy); //이동거리
if(dist > fuel)
return false; //이동할 수 없음 - 연료부족
else {
fuel -= dist; //이동거리만큼 연료 감소
x += dx;
y += dy;
return true; //이동 완료
}
}
}
<3-2> CarEx01 실행 클래스
public class CarEx01 {
public static void main(String[] args) {
Car sonata = new Car("소나타", 1660, 1500, 3640, 40.0);
Car grandeur = new Car("그렌저", 1660, 1525, 3695, 41.0);
sonata.show();
System.out.println();
grandeur.show();
}
}
<3-3> CarEx02 실행 클래스
import java.util.Scanner;
public class CarEx02 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("자동차 데이터 입력! ");
System.out.print("이름: "); String name = s.next();
System.out.print("너비: "); int width = s.nextInt();
System.out.print("높이: "); int height = s.nextInt();
System.out.print("길이: "); int length = s.nextInt();
System.out.print("연료량: "); double fuel = s.nextDouble();
Car myCar = new Car(name, width, height, length, fuel);
while(true) {
System.out.println("현재위치(" + myCar.getX() + "," + myCar.getY() + ") 남은 연료 " + myCar.getFuel());
System.out.printf("이동?[0:No, 1:Yes]: ");
if(s.nextInt()==0) break;
System.out.print("x방향의 이동거리: ");
double dx = s.nextDouble();
System.out.print("y방향의 이동거리: ");
double dy = s.nextDouble();
if(!myCar.move(dx, dy)) System.out.println("연료 부족!!");
}
s.close();
}
}
04. 객체 배열 활용 프로그램
º 아이디와 이름을 가진 Member 클래스를 생성하고 Member 객체 배열을 생성하여 5명의 데이터를 입력 받아 배열에 저장한 뒤, 번호, 아이디, 이름을 출력하는 클래스 작성
<4-1> Member 라이브러리 클래스
public class Member {
int no;
String id;
String name;
public Member(int no, String id, String name) {
this.no = no;
this.id = id;
this.name = name;
}
}
<4-2> MemberEx 실행 클래스
public class MemberEx {
public static void main(String[] args) {
Member[] members = new Member[5];
members[0] = new Member(1, "spring", "김보미");
members[1] = new Member(2, "cider", "이시원");
members[2] = new Member(3, "park", "박세리");
members[3] = new Member(4, "lee", "이상해");
members[4] = new Member(5, "kim", "김현아");
for(int i=0; i<members.length; i++) {
System.out.printf("%d번 회원 아이디:%s, 이름:%s\n", members[i].no, members[i].id, members[i].name);
}
}
}
05. 메소드 오버로딩
º MethodSample 클래스에는 3개의 getSum() 메소드가 정의되어 있다. main() 메소드는 MethodSample 클래스의 오버로딩된 메소드 getSum()을 호출하는 프로그램을 작성해 보시오.
<5-1> MethodSample 라이브러리 클래스
public class MethodSample {
public int getSum(int i, int j) {
return i + j;
}
public int getSum(int i, int j, int k) {
return i + j + k;
}
public double getSum(double i, double j) {
return i + j;
}
}
<5-2> MethodSampleEx 실행 클래스
public class MethodSampleEx {
public static void main(String[] args) {
MethodSample a = new MethodSample();
int i = a.getSum(1, 2);
int j = a.getSum(1, 2, 3);
double k = a.getSum(1.1, 2.2);
System.out.println("i: "+i);
System.out.println("j: "+j);
System.out.printf("k=%.2f: ", k);
}
}
06. static 멤버 사용
º 전역 함수로 작성하고자 하는 abs, max, min의 3개 함수를 static 메소드를 작성하고 호출하는 사례를 보이시오. 파이, 덧셈, 뺄셈 기능을 하는 필드, 메소드를 static으로 작성하고 호출해 보시오.
<6-1> Calc 라이브러리 클래스
public class Calc {
static double pi = 3.14159;
public static int plus(int a, int b) {
return a + b;
}
public static int minus(int a, int b) {
return a - b;
}
public static int abs(int a) {
return a>0? a:-a;
}
public static int max(int a, int b) {
return (a>b)? a:b;
}
public static int min(int a, int b) {
return (a>b)? b:a;
}
}
<6-2> CalcEx 실행 클래스
public class CalcEx {
public static void main(String[] args) {
double result1 = 10 * 10 * Calc.pi;
int result2 = Calc.plus(20, 5);
int result3 = Calc.minus(30, 20);
System.out.println("result1: " + result1);
System.out.println("result2: " + result2);
System.out.println("result3: " + result3);
System.out.println(Calc.abs(-5));
System.out.println(Calc.max(10, 8));
System.out.println(Calc.min(-3, -8));
}
}
'JAVA > 자바 실습' 카테고리의 다른 글
Java | Lab9 (0) | 2021.06.08 |
---|---|
Java | Lab8 (0) | 2021.06.08 |
Java | Lab5 (0) | 2021.04.15 |
Java | Lab4_Ex (0) | 2021.04.12 |
Java | Lab4 (0) | 2021.04.12 |