cf) Edit Plus에서 사용자 도구 > 기본설정 > 사용자도구> run의 동작을 없음 or 캡처로 바꾸기

 

(1) 참조DT을 저장하는 배열의 사용.

a. 선언

형식) 접근제어자 참DT[ ] 배열명; or 접근제어자 참DT 배열명[ ];

ex)

public String name[ ];

public Car car[ ];

private TV tv[ ];

 

b. 생성

형식) 배열명 = new 참DT[크기];

ex)

name = new String[3];

car = new Car[5];

tv = new TV[3];

 

>>>>>> a, b를 동시에..

접근제어자 참DT 배열명[] = new 참DT[크기];

ex)

public String name[ ] = new String[3];

public Car car[ ] = new Car[5];

private TV tv[ ] = new TV[3];

 

**c. 사용 : 주소값이 할당 (객체가 저장되는 것이 X) //

기본데이터 타입 배열은 생성자를 만들 필요가 없었다(바로 사용),

but, 참조형 데이터 타입 배열은 객체를 생성해줘야 함!!!

형식)

배열명[index] = new ClassName();

 

ex)

name[0] = new String();

or

name[0] = "홍길동"; -----> String만 이렇게 가능!!

car[0] = new Car("쏘나타");

tv[0] = new TV();

 

 

>>>>>> a, b, c를 동시에.. (값이 정해져 있을 때 - 주로 String 클래스에서 사용)

ex)

public String name[] = {"a","b","c"};

 

public class Car {
	String carName;
	private int speed;

	public Car(String carName) {
		this.carName = carName;
	}

	public int changeSpeed(int speed){
		this.speed = speed;
		return this.speed; //이게 리턴하는 값만 가지고 사용할 수 있도록 private으로 잡기
	}
}
public class CarArray {
	public static void main(String[] args) {
		Car c1 = new Car("쏘나타"); //자동차를 만든 것
		System.out.println("c1의 이름 : " + c1.carName);

		Car car[] = new Car[3];//배열 생성 - 자동차를 만든 것이 아니라 3칸짜리 공간만 만든 것
		//car[0] = c1; //c1이 주소값이니까 쏘나타 출력
		car[0] = new Car("쏘나타");
		car[1] = new Car("코란도");
		car[2] = new Car("제네시스");
		System.out.println("car[0]의 이름 : " + car[0].carName); //NullPointerException error > 무조건 . 앞에가 null일 때 발생
		System.out.println("car[1]의 이름 : " + car[1].carName);
		System.out.println("car[2]의 이름 : " + car[2].carName);

		System.out.println("---------------------------------");
		//쏘나타, K5, 제네시스, 테슬라, 마이바흐, 롤스로이스...
		String name[] = {"쏘나타", "K5", "제네시스", "테슬라",  "롤스로이스"}; //추가되거나 삭제되더라도 가능한 프로그램 만들기
		
		Car mycar[] = new Car[name.length]; //새로운 빈 공간을 만든다.
		for (int i=0;i<mycar.length ;i++ ){
			mycar[i] = new Car(name[i]); // 차를 하나씩 집어넣기
            System.out.println(mycar[i].carName);
		}
	}
}
---------- run ----------
c1의 이름 : 쏘나타
car[0]의 이름 : 쏘나타
car[1]의 이름 : 코란도
car[2]의 이름 : 제네시스
---------------------------------
쏘나타
K5
제네시스
테슬라
롤스로이스
public class ArrayTest5 {
	public static void main(String[] args) {
		int[] x = new int[5];
		x[0] = 1;
		x[1] = 2;
		x[2] = 4;
		x[3] = 5;
		for (int i=0;i<5 ;i++ ){
			System.out.println(x[i]);
		}
		//실수로 빼먹은 3을 x[2]에 삽입.
		int idx = 2;
		for (int i=x.length-1;i>idx ;i-- ){ //for문 역순, 먼저, x[2], x[3]에 있는 것을 뒤로 미룬 후 대입
			x[i] = x[i-1];

		}
		x[idx] = 3;
		System.out.println("삽입후-------------");
		for (int i=0;i<5 ;i++ ){
			System.out.println(x[i]);
		}
	}
}
---------- run ----------
1
2
4
5
0
삽입후-------------
1
2
3
4
5
import java.io.*;

public class ArrayTest6 {

	private  BufferedReader in;

	public ArrayTest6() { //프로그램이 시작하자마자 실행
		in = new BufferedReader(new InputStreamReader(System.in));
	}

	private  String read() {
		String msg = "";
		try{
			msg = in.readLine();
		}catch (Exception e){
			e.printStackTrace();
		}
		return msg;
	}

	public static void main(String[] args) {
		ArrayTest6 a = new ArrayTest6();
		int c = 2; //입력횟수
		int n = 20;
		int cnt = 0;
		
		int[] x = new int[c];
	
		for (int i=0;i<c;i++ ){
			x[i] = Integer.parseInt(a.read()); //read로 적은 것은 int로 변환 (4,6입력하기)

		}		
			boolean b[] = new boolean[n+1]; //
			for (int i=0;i<c;i++){
				for (int k=x[i];k<n+1 ;k+=x[i] ){//4의배수, 6의배수 자체를 true로 만듦
					b[k] = true;
				}  		
			}
			
			for (int i=0;i<n+1 ;i++ ){
				if (b[i]){
					cnt++;
				}
				
			}
				System.out.println(cnt);//7 (겹치는 12는 한 번만 카운팅)
		}
}

+ Recent posts