Full Stack 교육 회고록

8/17 [자료구조]-배열 [java] -매소드

순두부 호랑이 2022. 8. 17. 16:59
728x90
SMALL

<자료구조>

package 배열;

public class Ex01배열생성 {

	public static void main(String[] args) {
		
		//1. 정수형 데이터를 저장할 수 있는 베열의 참조값을 저장하는 변수 선언
		int[] arr;
		int arr2[];
		
		//2. arr 변수에 크기가 10인 배열의 참조값 할당
		arr = new int[10];
		
		//3. 각각 인덱스에 값을 저장
		arr[0] = 1;
		arr[1] = 2;
		arr[2] = 3;
		
		//정수형 배열이 생성되었을 때 기본값? 0
		
		//3-1. 배열 생성 할 때 저장되어야 하는 값을 알고 있을때
		int[]arr3 = {5,3,2,1,8,9,10};
		
		//4. arr3 배열에 저장된 모든 데이터를 출력
		System.out.println(arr3[0]);
		System.out.println(arr3[1]);
		System.out.println(arr3[2]);
		System.out.println(arr3[3]);
		System.out.println(arr3[4]);
		
		//         i<arr3.length
		for(int i=0 ;i<=arr3.length-1 ;i++) {
			System.out.println(arr3[i]);
		}
		
		//5. 배열에 저장된 모든 값의 합
		int sum = 0; //누적합 저장할 변수
		
		for(int i=0;i<arr3.length; i++) {
			//sum에 배열값 누적하는 방법
			sum+=arr3[i]; //sum=sum+arr3[i]
		}
		System.out.println("합"+ sum);

	}

}
package 배열;

import java.util.Random;
import java.util.Scanner;

public class Ex02 {

	public static void main(String[] args) {
		
		//random 도구(객체, 인스턴스)
		Random rd = new Random();
		rd.nextInt(20)+1;
		
		// 1. 크기가 10인 1차원 정수형 배열을 선언한 후 원하는 값으로 초기화하시오.
		   int[]arr = new int[10]; // 배열생성 -> 값 따로 초기화 x(0)	
           
		   arr[0] =5;
		   arr[1] =2;
		   arr[2] =3;
		   arr[3] =2;
		   arr[4] =1;
		   arr[5] =4;
		   arr[6] =6;
		   arr[7] =3;
		   arr[8] =12;
		   arr[9] =10;
           
           int[]arr2= {2,4,6,7,8,2,6,8,4}; // ->크기가 10인 배열을 생성
		   
		   Scanner sc = new Scanner(System.in);
		   
		   for(int i =0; i<arr.length; i++) {
			   arr[i] = rd.nextInt(20)+i;
			   arr[i] = sc.nextInt();
		   }
		   int cnt =0;
		   System.out.print("배열 홀수 : ");
		   for(int i=0; i<arr.length-1; i++) {
			   if(arr[i]%2==1) {
				   cnt++;
				   System.out.print(arr[i]);
			   }
		   }
		   System.out.println("홀수 개수: "+cnt);

		   
		//int[]arr2;
		//arr2= {2,4,6,7,4,8,2,6,8,4}; //->크기가 10인 배열을 생성
		// ->이렇게 쓰는거 불가능! 무조건 배열 생성 후 바로 변수까지 선언   
		   
		   
		// 2.배열의 값 중 홀수 만 출력하고 몇 개인지 출력하시오.
		// int arr[]= {5,6,13,27,34,35,78,2,3,1,};
        // 배열 홀수 : 5,13,27,35,3,1
	    // 총 개수:6개

		//배열을 랜덤값으로 초기화 하도록 수정하시오.
		   
		   
			   
		   }

	}

}

 

package 배열;

import java.util.Random;
import java.util.Scanner;

public class Ex03 {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		Random rd = new Random();
		
		//랜덤 배열 생성
		int[]arr=new int [10];
		for(int i =0;i<arr.length;i++) {
			arr[i]=rd.nextInt(20)+1;
			System.out.print(arr[i]+" ");
		}
		
		//최대값
		int max = arr[0];
		//최소값
		int min = arr[0];
		
		//최대값 구하는 반복문
		for(int i=0; i<arr.length; i++) {
			if(arr[i]>max) {
				max=arr[i];
			}
		}
		System.out.println("가장 큰 값 : "+ max);
		
		//최솟값 구하는 반복문
		for(int i=0; i<arr.length; i++) {
			if(arr[i]<min) {
				min = arr[i];
                System.out.println("가장 작은 값 : "+min);
			}
		}
	}
}
package 배열;

import java.util.Scanner;

public class Ex04 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		//1. 크기가 5인 정수형 배열을 생성하시오.
		int[] arr = new int[5];
	
		
		// 2. 정수형 배열에 5개의 점수를 입력하여 저장한 후 모두 출력하시오.
		for(int i =0;i<arr.length;i++) {
		System.out.print(i+1 + "번째 입력 >> ");
		arr[i]= sc.nextInt();
		}
		System.out.print("입력된 점수 : " );
		for(int j =0; j<arr.length;j++) {
			System.out.print(arr[j]+ " ");
			
		}
		
		int max = arr[0];
		int min = arr[0];
		int sum = 0;
		
		for(int i=0; i<arr.length; i++) {
			if(arr[i]>max) {
				max=arr[i];
			}
		}
		System.out.println("최고 점수 : "+ max);
		
		for(int i=0; i<arr.length; i++) {
			if(arr[i]<min) {
				min = arr[i];
			}
		}
	    System.out.println("최소 점수 : "+min);
	    System.out.println("총 합 : "+sum);
	    System.out.println("평균 : "+sum/5.0);
		
	}

}

 

package 배열;

import java.util.Scanner;

public class ex05 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		//문자열 배열 생성, 레퍼런스 변수 선언
		String[] arrStr = new String[5];
				
		arrStr[0] = "박진형";
		arrStr[1] = "김설아";
		arrStr[2] = "임다인";
		arrStr[3] = "문재승";
		arrStr[4] = "김지연";
		
		System.out.print("검색할 이름 입력 >> ");
		String name = sc.next(); 

		for(int i=0;i<arrStr.length;i++) {
			if(name.equals(arrStr[i])) {
				System.out.println(name+"님은 "+i+ "번째 인덱스에 저장되어 있습니다");
				break;//이름이 안겹칠때만 사용 , 도아성 반복을 진행하지 않아도 될때 잘 활용을 해야 한다.
			}
	}

	}

}

 

<java>

 

[메소드(Method)]

 

입력값 ex)2   ->  알고리즘ex)2x + 1  ->   결과값 ex)5

 

- 객체의 행위를 표현

- 반복적으로 사용되는 코드 최소화

- 어떤 작업을 수행하기 위한 명령문의 집합

 

[메소드(Method)의 기본구조]

public int addNumber(int num1 , int num2) {
	int result = num1+num2;
    return result;
}

접근제한자 리턴타입 메소드이름(매개변수) {

              실행문장1

              실행문장2

               return(반환 값)

}

public class ex01 {

	public static void main(String[] args) {
		
		// 더하기 기능을 가질수 있는 메소드 생성하기
		
		// 메소드()의 기본구조
		// 1. 접근제한자 : public -> 내부/외부 어디서든 사용가능!
		// 2. 리턴타입 : 메소드의 결과값이 어떤 형태로 나오는지 지정!
		//    + 리턴의 타입이 없는 경우 'void'사용
		// 3. 메소드 이름 : 메소드의 기능을 사용하기 위해서는 이름을 호출! 해줘야 한다
		// 4. 매개변수 : 일련의 알고리즘을 처리하기 위한 재료값! -> x값
		// + return 키워드! : 메소드의 결과에 따라 도출 되어야 하는 결과값! - > y값
		
		// 메소드 호출
		int result = sum(2,3);
		System.out.println("결과값: "+ result);

	}

	// 메소드를 지정할 수 있는 영역
	// -> main() 영역을 벗어나고 아직 class의 영역 포함 될 때!
	public static int sum(int num1, int num2) {
	
		int  result = num1 + num2;
		
		return result;
	}
	
	
}

리턴타입: 어떤 형태의 결과값으로 출력할건지 미리 지정한다 ex)정수형 int , 실수형 double 정하기

매개변수: x, 메소드안에서만 사용한다

 

return:실제나온 결과 값

리턴타입은 반환값과 같은 값으로 받아야 한다

 

[메소드의 기본구조- 리턴타입]

- 메소드의 수행결과를 어떤 타입(자료형)으로 반환할 것인지 알려주는 것

- 아무것도 반환하지 않을 경우 리턴 타입대신 void를 사용한다.

- 메소드가 결과값을 반환하는 경우 반드시 return문을 사용하여 메소드의 리턴타입에 맞는 결과값을 지정해야 한다.

 

1. 반환값이 없을 경우(void)

public void prinResult(){


}

2. 반환값이 있는 경우

public int minus(){

}

->

public int minus(){

      return 0;
}

[메소드의 종류]

매개변수o , 반환값 x -> 가장 많이 쓰임

매개변수 o, 반환값 o -> 가장 많이 쓰임

매개변수 x, 반환값 o 

매개변수 x, 반환값 x -> 드물게 쓰임

 

[메소드- 매개변수 o, 반환값 x]

public class Test{

	public static void main(String[] args){
    	addNumber(10,15);
    }
    
    public static void addNumber(int num1, int num2) {
    	int result = num1 + num2;
        System.out.println("연산결과 : "+result);
    }
}

->

console

연산결과 : 25

[메소드- 매개변수 o, 반환값 o]

public class Test{

	public static void main(String[] args) {
    	int value = addNumner(8,12);
        System.out.println("연산결과 : "+value);
    }
    
    public static int addNumber(int num1, int num2){
    	int result = num1 + num2;
        return result;
    }
 }

->

console

연산결과 : 20

[메소드- 매개변수 x, 반환값 o]

public class Test{

	public static void main(String[] args){
    		System.out.println(toDay());
    }
    
    public static String toDay(){
    	String today = "4월5일";
        return today;
        }
  }

->

consolle 

4월 5일

[메소드- 매개변수 x, 반환값 x]

public class Test{

	public static void main(String[]args){
    	print();
    }
    
    public static void print(){
    	System.out.println("프로그램이 종료되었습니다.");
        }
  }

 

 

 

 

 

 

 

 


public class Ex02 {

	public static void main(String[] args) {
		
		add(3,5);
		sub(3,5);
		mul(3,5);
		div(3,5);

	}
	
	//매소드 연산에 대한 결과값은 메소드 내에서 출력할 수 있도록 하시오
	
	// add(int num1, int num2)
	public static void add(int num1,int num2) {
		int add = num1 + num2;	
		System.out.println("add값: "+ add);
	}

	//sub(int num1, int num2)
	public static void sub(int num1,int num2) {
		// 큰 수에서 작은수를 뺄수 있도록 수정!
		int sub = num1>num2? num1-num2 : num2- num1;
		System.out.println("sub값: "+ sub);
	}
	
	//mul(int num1, int num2)
	public static void mul(int num1,int num2) {
		int mul = num1 * num2;
		System.out.println("mul값: "+ mul);
	}
	
	//div(int num1, int num2)
	public static void div(int num1,int num2) {
		int div = num1 /num2;
		System.out.println("div값: "+ div);
	}

}
import java.util.Scanner;

public class Ex03 {

	public static void main(String[] args) {
		// 정수형 변수 num1 과 num2를 각각 초기화 하고
		// 문자형 변수 op를 선언해 원하는 연산자로 초기화 하세요.
		// num1, num2, op를 받아 num1과 num2를 op애 맞게 연산한 최종 값을 반환해주는 cal 메소드를 작성하세요
	
		Scanner sc = new Scanner(System.in);
		
		System.out.println("첫번째 정수 : ");		
		int num1 = sc.nextInt();
		
		System.out.println("두번째 정수 : ");
		int num2 = sc.nextInt();
		System.out.println("연산자 입력(+,-,*,/) : ");
		String op = sc.next();
		
		System.out.println("결과값: " + cal(num1,num2,op));

	}

	  public static int cal(int a, int b, String op) {
		  
		
		  int result = 0;
	  
		  if(op.equals("+")) {
			   result = a+b;
		  }else if(op.equals("-")) {
			  result = a>b? a-b: b-a;
		  }else if(op.equals("*")) {
			  result = a*b;
		  }else {
		      result = a/b;
		  }

		  return result;
	}

}
public class Ex04 {

	public static void main(String[] args) {
		
		int base = 2;
		int n =3;
		int result = powerN(base, n);
		System.out.println("결과 확인 : "+ result);

	}
	
	public static int powerN(int base , int n) { 
	    
		int sum = 1;
		for(int i = 1; i<=n ; i++) {
			sum *= base;
		} return sum;
		
		return (int)Math.pow(base, n);
	
		
		
		
		
		
	}

}
int num1 = 11;
		int num2 = 9;
		int result = close10(num1, num2);
		System.out.println("10에 가까운 수 : " + result);
	}
	public static int close10(int num1, int num2) {
		int a = 0;
		int b = 0;// num1과 10의 차이값
		int c = 0;// num2와 10의 차이값
		if(num1>=10) {
			b = num1-10;
		}else {
			b = 10-num1;
		}
		if(num2>=10) {
			c= num2-10;
		}else {
			c= 10-num2;
		}
		if(b<c) {
			a=num1;
		}else if(c<b){
			a=num2;
		}else if(b==c) {
			a=0;
		}
		return a;
	}
728x90
LIST