IT/Java & JSP & FW

java :: 예제 프로그램, 1차원 배열 기초

엑수시아 2011. 12. 13. 12:56
가위,바위,보 게임 여러가지 방법
import java.io.*;
public class day07_game {
	public static void main(String[] args) 
	throws IOException{
		
		while(true){
			System.out.println("------------------");
			System.out.println("1.가위 2.바위 3.보 4.종료");
			System.out.println("------------------");
			System.out.print("입력");
			
			int user=System.in.read()-48;
			System.in.skip(2);
			if(user==4){
				System.out.println("게임을 종료합니다");
				System.exit(0);
			}
			
			int com=(int)(Math.random()*3+1);
			System.out.println("사용자:"+user);
			System.out.println("컴퓨터:"+com);
			
			//1. 9개의 경우의 수를 전부 대입하는 알고리즘
			if(user==1){
				if(com==1){
					System.out.println("비겼습니다.");
				}else if(com==2){
					System.out.println("컴퓨터 승!");
				}else if(com==3){
					System.out.println("사용자 승!");
				}
			}else if(user==2){
				if(com==1){
					System.out.println("사용자 승!");
				}else if(com==2){
					System.out.println("비겼습니다.");
				}else if(com==3){
					System.out.println("컴퓨터 승!");
				}
			}else if(user==3){
				if(com==1){
					System.out.println("컴퓨터 승!");
				}else if(com==2){
					System.out.println("사용자 승!");
				}else if(com==3){
					System.out.println("비겼습니다.");
				}
			}
			
			//2. 5개의 경우의 수를 만드는 경우
			switch(user-com){
			case -2:System.out.println("사용자 승!");break;
			case -1:System.out.println("컴퓨터 승!");break;
			case 0:System.out.println("비겼음");break;
			case 1:System.out.println("사용자 승!");break;
			case 2:System.out.println("컴퓨터 승!");
			}
			
			//3. 규칙을 이용해서 구현하는 방법
			if(user==com){
				System.out.println("비겼음");
			}else if((user+1)%3==com%3){
				System.out.println("컴퓨터 승!");
			}else if(user%3==(com+1)%3){
				System.out.println("사용자 승!");
			}
		}
	}
}


1차원 배열

- 선언하기
자료형 배열명[];
자료형 []배열명;

- 메모리생성
배열명=new 자료형[개수];

- 초기화하기
배열명[인덱스]=값;

- 스왑기능
두 배열을 바꿀 때 사용하는 기능 밑에 소스 예제 참조
public class day07_test {
	public static void main(String[] args) {
		
		//1. 선언하기 (구청신고)
		int arr[];  //[]를 넣어 배열임을 확인시킴
		
		//2. 메모리생성 (건물 짓기)
		arr=new int[3];
		
		//3. 초기화(입주)
		arr[0]=10;
		arr[1]=20;
		arr[2]=30;
		
		//데이터 불러오기
		System.out.println("arr[1]="+arr[1]);
		System.out.println("arr의 크기:"+arr.length);  //length를 사용해 배열의 크기를 확인할 수 있다.
		
		//1+2 선언과 생성 동시에 하기
		double arr2[]=new double[5];
		
		System.out.println("arr2[4]="+arr2[4]);
		//System.out.println("arr2[5]="+arr2[5]); <잘못된문구 배열은 0부터 시작하고 있음을 기억해야 한다.
		System.out.println("arr2의 크기:"+arr2.length);
		
		//1+2+3 선언과 생성과 초기화를 한 번에 하기
		int c[]={10,20,30,40,50,60};
		//int c[]=new int[6];  위와 같음.
		int num=c.length;  //c.length 를 한 번 불러서 변수로 저장해서 한 번만 호출하게 함
		for(int i=0;i<num;i++){  //for문의로 출력  i와 num을 비교해서 출력함
			System.out.println("c["+i+"]="+c[i]);
		}
		
		c=new int[3];  //이름이 같은 변수에 배열을 다시 선언해서 새롭게 함
		System.out.println("*********************");
		for(int i=0;i<c.length;i++){  
			System.out.println("c["+i+"]="+c[i]);
		}
		
		int d[]=new int[7];
		System.out.println("---------------------");
		for(int i=0;i<d.length;i++){  
			System.out.println("d["+i+"]="+d[i]);
		}
		
		//기본적인 스왑 공식 출력해보면 데이터의 크기가 c와 d가 바뀜을 알 수 있다. 주소를 바꾸기 때문이다.
		int temp[];
		temp=c;
		c=d;
		d=temp;
		
		System.out.println("*********************");
		for(int i=0;i<c.length;i++){  
			System.out.println("c["+i+"]="+c[i]);
		}
		System.out.println("---------------------");
		for(int i=0;i<d.length;i++){  
			System.out.println("d["+i+"]="+d[i]);
		}
		
	}
}


배열 주의 사항
<예제> 
public class day07_test {
	public static void main(String[] args) {
		
		//1+2+3 선언과 생성과 초기화를 한 번에 하기
		int c[]={10,20,30,40,50,60};
		//int c[]=new int[6];  위와 같음.
		System.out.println("*********************");
		for(int i=0;i<c.length;i++){  
			System.out.println("c["+i+"]="+c[i]);
		}
		
		int d[]=c;  //c의 주소값을 d 변수에 전달.
		System.out.println("*********************");
		for(int i=0;i<d.length;i++){  
			System.out.println("d["+i+"]="+d[i]);
		}
		
		d[3]=1004;  //d변수 [3]배열 주소 값에 1004를 입력
		System.out.println("*********************");
		for(int i=0;i<d.length;i++){  
			System.out.println("d["+i+"]="+d[i]);
		}
		
		System.out.println("*********************");
		for(int i=0;i<d.length;i++){  
			System.out.println("c["+i+"]="+d[i]);
		}
		//출력해 보면 주소값이 같기 때문에 c[3]은 d[3]과 같은 값을 가지게 된다.
	}
}



10개의 값을 입력 받고 최대값 평균 합산 오름차순으로 정렬해 결과 보여주는 프로그램
import java.io.*;
public class day07_last {
	public static void main(String[] args) 
	throws IOException{
		BufferedReader in=
				new BufferedReader(new InputStreamReader(System.in));
		
		int max=0, avg=0, sum=0;  //변수에 초기값을 집어 넣는다.
		
		int arr[]=new int[10];  //배열에 10개의 공간을 만든다.
		
		System.out.println("10개의 값을 입력해주세요.");
		for(int i=0;i<arr.length;i++){
			System.out.print((i+1)+"번째 값:");
			arr[i]=Integer.parseInt(in.readLine());
			sum+=arr[i]; //총점
			if(max<arr[i]){ //최대값 찾기. 비교후 가장 높은 값을 max에 넣는다.
				max=arr[i];
			}
		}
		
		avg=sum/arr.length;  //평균 도출
		
		System.out.println("**********************************");
		System.out.println("Result");
		System.out.println("합산:"+sum+"/평균:"+avg+"/최대값:"+max);
		
		for(int i=0;i<arr.length;i++){  //원래 배열에 들어 있는 값을 그대로 출력함.
			System.out.print(arr[i]+"  ");
		}
		
		for(int i=0;i<arr.length-1;i++){  //selection sort(오름차순) 기능 구현
			for(int j=i+1;j<arr.length;j++){
				if(arr[i]<arr[j]){
					int temp=arr[i];
					arr[i]=arr[j];
					arr[j]=temp;
				}
			}
		}
		
		System.out.println("\n======================================");
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+"  ");
		}
	}

}