IT/Java & JSP & FW
java :: 예제 프로그램, 1차원 배열 기초
엑수시아
2011. 12. 13. 12:56
가위,바위,보 게임 여러가지 방법
1차원 배열
- 선언하기
자료형 배열명[];
자료형 []배열명;
- 메모리생성
배열명=new 자료형[개수];
- 초기화하기
배열명[인덱스]=값;
- 스왑기능
두 배열을 바꿀 때 사용하는 기능 밑에 소스 예제 참조
배열 주의 사항
<예제>
10개의 값을 입력 받고 최대값 평균 합산 오름차순으로 정렬해 결과 보여주는 프로그램
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]+" "); } } }