티스토리 뷰

학습정리-10-20.txt
0.00MB

1. 배열에서의 초기화 방법은?

배열 생성 후 직접 하나씩 초기화하는 방법

int[] arr = new int[3];

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;

 

생성과 초기화를 같이 하는 방법

 int[] arr = new int[] {1, 2, 3};

 int[] arr = {1, 2, 3};

 

 

 

 


2. arraycopy 함수의 사용 방법은?

package edu.kosmo.ex.practices;

import java.util.Arrays;

public class ArrayUtils {
    public static void main(String[] args) {
        
    	int[] ar1 = new int[10];
    	int[] ar2 = new int[10];
    	
    	//클래스 이름으로 호출할 수 있는 함수는 static
    	Arrays.fill(ar1, 7); // 배열 ar1을 7로 초기화
    	System.arraycopy(ar1, 0, ar2, 3, 4); // 배열 ar1을 ar2로 부분복사
    	//(ar1[0], ar2[3], 4) == (원본, 복사할 대상, 복사 개수)
    	
    	for(int i = 0; i < ar1.length; i++) {
    		System.out.print(ar1[i] + " ");
    	}
    	System.out.println();
    	// 7 7 7 7 7 7 7 7 7 7 
    	
    	for(int i = 0; i < ar2.length; i++) {
    		System.out.print(ar2[i] + " ");
    	}
    	// 0 0 0 7 7 7 7 0 0 0 
    	
    }
}

arraycopy함수는 배열의 부분을 복사해 올 때 사용한다.

System.arraycopy(ar1, 0, ar2, 3, 4);  → (ar1[0], ar2[3], 4)  ==  (원본, 복사할 대상, 복사 개수)

System.arraycopy(src, srcPos, dest, destPos, length);

src - 원본 배열
srcPos - 원본 배열의 복사 시작 위치
dest - 복사할 배열
destPost - 복사할 배열의 복사 시작 위치
length - 복사할 요소의 개수



 

 


3.main 함수에서 String[] args 사용 방법은?

main 함수에서 파라미터 값을  String 배열을 생성해서 넣어준다.

String[] arr = new String[] {               };

class Simple {
   public static void main(String[] args) {
      for(int i = 0; i < args.length; i++ )
         System.out.println(args[i]);
   }
}

위의 클래스를 터미널을 통해 초기화 값을 넣어 실행시키면 아래와 같다.

String[] arr = new String[] {"Coffee", "Milk", "Orange"};

 

 

 

 


4.enhenced for 문이란?

단순 출력용으로 값을 따로 넣어주는 것은 불가능하다.

package edu.kosmo.ex.practices;


public class ForEach {
    public static void main(String[] args) {
        
    	int[] ar = {1,2,3,4,5};
    	
    	for(int i = 0; i < ar.length; i++) {
    		System.out.println(ar[i]);
    	}
    	
    	for (int i : ar) {
			System.out.println(i);
		}
    	System.out.println("-----------------");
    	
    	
    	for(int e : ar) {
    		System.out.print(e + " ");
    	}
    	System.out.println(); // 1 2 3 4 5 
    	
    	int sum = 0;
    	
    	for(int e : ar) {
    		sum += e;
    	}
    	System.out.println("sum: " + sum); // sum: 15
  
    }
}

for문을 이용해 순차적으로 배열을 생성하던 것을 foreach문을 이용하면 좀 더 쉽고 간결하게 만들 수 있다.

 

 

 

 



5. Box 클래스를 짜시오.
public static void main(String[] args) {
Box[] ar = new Box[5];
ar[0] = new Box(101, "Coffee");
ar[1] = new Box(202, "Computer");
ar[2] = new Box(303, "Apple");
ar[3] = new Box(404, "Dress");
ar[4] = new Box(505, "Fairy-tale book");

for (Box e : ar) {
if (e.getBoxNum() == 505)
System.out.println(e);
}
}

package edu.kosmo.ex.practices;

class Box5{
	private int boxNum;
	private String contents;
	
	public Box5(int boxNum, String contents) {
		this.boxNum = boxNum;
		this.contents = contents;
	}
	
	public int getBoxNum() {
		return boxNum;
	}
	
	public String toString() {
		return contents;
	}
	
}



public class ForEach2 {
    public static void main(String[] args) {
    	
		Box5[] ar = new Box5[5];
		ar[0] = new Box5(101, "Coffee");
		ar[1] = new Box5(202, "Computer");
		ar[2] = new Box5(303, "Apple");
		ar[3] = new Box5(404, "Dress");
		ar[4] = new Box5(505, "Fairy-tale book");
	
		
		for(Box5 e: ar) {
		      if(e.getBoxNum() == 505)
		         System.out.println(e);
		   }
    	
  
    }
}

★ println에 객체만 넣게 되면 toString 함수를 호출한다. 따라서 toString 함수를 만들어 주지 않으면 출력 값이 문자열이 아니라 메모리 위치?값이 나온다.

 

 

 

 

 

6. 프로그램을 완성 하시오.
양의 정수 100개를 랜덤 생성하여, 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력해 보자.

package edu.kosmo.ex.practices;

class Number{
	private int number;
	
	public Number(int number) {
		this.number = number;
	}
	
	public int getNumber() {
		return number;
	}
	
	public static void getMultiple3(Number[] num) {
		for(int i = 0; i < num.length; i++) {
			if(num[i].getNumber() % 3 == 0) {
				System.out.println(num[i].getNumber());
			}
		}
	}
	
}


public class NumberArr {
    public static void main(String[] args) {
    	
    	Number[] num = new Number[100];
    	
    	for(int i = 0; i < num.length; i++) {
    		int number = (int)(Math.random()*500 + 1);
    		num[i] = new Number(number);
    	}
    	
    	Number.getMultiple3(num);
		
  
    }
}

 

 

 

 

 



7. 프로그램을 완성 하시오. 
- 5개의 숫자를 랜덤 으로 받아 배열로 저장
- 5개의 숫자 중 가장 큰 값을 출력

class ArrMax{
	private int[] arr;
	
	public ArrMax() {
		arr = new int[5];
		
		for(int i = 0; i < arr.length; i++) {
			arr[i] = (int)(Math.random() * 100 + 1);
			
		}
	}

	public void printMax() {
		int max = arr[0];
		
		for(int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
			
			if(arr[i] > max) {
				max = arr[i];
			}
		}
		
		System.out.println("최대값은 " + max);
	}
	
	
}


public class MaxTest {

	public static void main(String[] args) {
		ArrMax arrMax = new ArrMax();
		
		arrMax.printMax();
				
	}

}

 

 

 

 

 



8. char 배열을 생성하여, 알파벳 A~Z까지 대입 후, 출력 해보자. 
알파벳은 26개.

public class AlphabetTest {

	public static void main(String[] args) {
		char[] alphabet = new char[26];
		
		for(int i = 0; i < alphabet.length; i++) {
			alphabet[i] = (char)('A' + i);
			
			//System.out.print(alphabet[i] + " ");
		}
		
		for (char c : alphabet) {
			System.out.print(c + " ");
		}
		
	}

}

강제 형 변환 중요!

 

 

 

 



9. 정수를 10개 저장하는 배열을 만들고 

1에서 10까지 범위의 정수를 랜덤하게 생성하여 배열에 저장하라. 
그리고 배열에 든 숫자들과 평균을 출력하라.

랜덤한 정수들 : 3 6 3 6 1 3 8 9 6 9
평균은 5.4

더보기
package edu.kosmo.ex.practices;

class Number0{
	private int number;
	
	public Number0(int number) {
		this.number = number;
	}
	
	public String toString() {
		return String.valueOf(number);
	}
	
	public int getNumber0() {
		return number;
	}
	
	public static int getNumSum(Number0[] num) {
		int sum = 0;
		for(int i = 0; i < num.length; i++) {
			sum += num[i].getNumber0();
		}
		return sum;
	}
	
	public static double getSumAvg(Number0[] num) {
		return getNumSum(num) / (double)num.length; 
	}
	
	
}


public class NumberAvgArr {
    public static void main(String[] args) {
    	
    	Number0[] num = new Number0[10];
    	
    	for(int i = 0; i < num.length; i++) {
    		int number = (int)(Math.random() * 10 + 1);
    		
    		num[i] = new Number0(number);
    	}
		
    	System.out.print("랜덤한 정수들 : ");
    	for (Number0 i : num) {
			System.out.print(i + " ");
		}
    	
    	System.out.println('\n' +"평균은 " + Number0.getSumAvg(num));
    	
    }
}

 

class ArrAvg{
	private int[] arr = new int[10];
	
	public ArrAvg() {
		for(int i = 0; i < arr.length; i++) {
			arr[i] = (int)(Math.random() * 10 + 1);
		}
	}
	
	public void resultPrint() {
		double avg = 0;
		double sum = 0;
		
		for (int i : arr) {
			sum += i;
			System.out.println(i);
		}
		
		avg = sum / arr.length;
		
		System.out.println("평균은 " + avg);
	}
	
}


public class NumberAvgArr {
    public static void main(String[] args) {
    	
    	ArrAvg arrAvg = new ArrAvg();
    	arrAvg.resultPrint();
    	
    }
}

 

 

 

 

 


10. Rectangle 을 배열로 3개 선언

해당 객체에 인덱스 순서대로 가로 세로 설정 
이번에는 반드시 scanner 로 입력 받을것

해당 배열에 있는 Rectangle 의 총넓이의 합을 구하시오.

또한 아래의 함수도 만들것(static 으로 만들것)
- 파라미터를 Rectangle 배열로 받아서 해당 배열에 들어 잇는 
Rectangle 들에 총 넓이를 리턴 하는 함수를 만드시오.

import java.util.Scanner;

class Rectangle{
	private int width;
	private int height;
	
	public Rectangle(int width, int height) {
		this.width = width;
		this.height = height;
	}
	
	public int getRecArea() {
		return width * height;
	}
	
	public static int getSumArea(Rectangle[] rec) {
		int sum = 0;
		for (int i = 0; i < rec.length; i++) {
			sum += rec[i].getRecArea();
		}
		return sum;
	}
	
	
}



public class RectangleTest {
	
	public static int getSumArea(Rectangle[] rec) {
		int sum = 0;
		
		for (Rectangle rectangle : rec) {
			sum += rectangle.getRecArea();
		}
		
		//위의 foreach문과 아래의 for문은 같다.
		
		for (int i = 0; i < rec.length; i++) {
			sum += rec[i].getRecArea();
		}
		return sum;
	}  //이 안에 있어도 문제 없이 돌아감
	
	
    public static void main(String[] args) {
    	
		Scanner sc = new Scanner(System.in);
    	
		Rectangle[] rec = new Rectangle[3];
		
		for(int i = 0; i < rec.length; i++) {
			System.out.println("가로 길이를 입력하세요.");
			int width = sc.nextInt();
			
			System.out.println("세로 길이를 입력하세요.");
			int height = sc.nextInt();
			
			rec[i] = new Rectangle(width, height);
			
			System.out.println("사각형" + (i + 1) + " 넓이는 " + rec[i].getRecArea());
		
		}
		
		System.out.println("사각형 총 넓이는 " + Rectangle.getSumArea(rec));
  
    }
}

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함