가위,바위,보 게임 여러가지 방법
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]+" ");
}
}
}