JAVA/자바 실습 / / 2021. 4. 16. 10:18

Java | Lab6

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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유