[자바퀴즈] 퀴즈 6

1. 반복문 3가지의 무한루프 만드는 방법은?

for(;;) { } / while(true) { } / do while(true) { }


2. 구구단 출력을 하시오


for(int i = 2; i < 10; i++) {
	for(int j = 1; j < 10; j++) {
		System.out.println(i + " * " + j + " = " + (i*j));
		}
	}


3. 짝수단만 찍으시오

// 방법 1 (가장 nice한 방법 ; 직관적이라서)

for(int i = 2; i < 10; i++) {

	if(i % 2 != 0) 
		continue;

	for(int j = 1; j < 10; j++) {
		System.out.println(i + " * " + j + " = " + (i*j));
	}
}

================================================================================================
// 방법 2

for(int i = 2; i < 10; i++) {

	for(int j = 1; j < 10; j++) {

		if(i % 2 == 0) {

			System.out.println(i + " * " + j + " = " + (i*j));
		}	
	}
}


================================================================================================
//방법 3

for(int i = 2; i < 10; i++) {

	if(i % 2 == 0) {

		for(int j = 1; j < 10; j++) {

			System.out.println(i + " * " + j + " = " + (i*j));
		}
	}		
}


4. 3의 배수인 단만 출력하시오

for(int i = 2; i < 10; i++) {
	if(i % 3 != 0)
		continue;
			
	for(int j = 1; j < 10; j++) {
		System.out.println(i + " * " + j + " = " + (i*j));
	}
}
 3,6,9 출력

방법들 중에는 3번과 같은 방법들이 있음		


5. 아래의 Star를 찍으시오

5-1 )

★★★★★
★★★★★
★★★★★
★★★★★
★★★★★

for(int i = 1; i <= 5; i++) {
	for(int j = 1; j <= 5; j++) {
		System.out.print("★");
	} System.out.println();
}

5-2)


★★
★★★
★★★★
★★★★★

for(int i = 1; i <= 5; i++) {
	for(int j = 1; j <= j; j++) {
		System.out.print("★");
	} System.out.println();
}
// 1행일때 1개찍고 2행일때 2개찍고 하면되니까 i랑 같아지면서 별찍으면 됨

5-3)

★★★★★
★★★★
★★★
★★


for(int i = 5; i >= 1; i--) {
	for(int j = 1; j <= i; j++) {
		System.out.print("★");
	} System.out.println();
}

5-4)

__
__
★★
__
★★★
__
★★★★
_★★★★★

// 방법 1

for(int i = 1; i <= 5; i++) {
	for(int j = 1; j <= i -1; j++) {
		System.out.print(" ");
	} 
	for(int j = 5; j >= i; j--) {
		System.out.print("★");
	}
    System.out.println();
}


================================================================================================
// 방법 2
for(int i = 5; i >= 1; i--) {
	for(int j = 5; j > i; j--) {
		System.out.print(" ");
	} 
	for(int j = 1; j <= i; j++) {
		System.out.print("*");
	}
	System.out.println();
}

5-5) ???????? 소스 봐도 모르겠음 ㅠㅠㅠ

__
__ ★★★
_ ★★★★★
★★★★★★★

for(int i = 0; i <5; i++) {
	for(int j = 4; j > i; j--) {
		System.out.print(" ");
	} 
	for(int j = 1; j <= i*2 +1; j++) {
		System.out.print("*");
	}
	System.out.println();
}


6. 함수는 어떻게 알아 볼수 있는가

함수는 ( ) 대괄호를 보면 식별이 가능하다 함수는 만들 줄 알아야하고 쓸 줄 알아야하는데 함수안에는 함수가 존재할 수 없으며 ( )안에는 매개변수가 오게 된다
→ 매개변수는 변수선언을 하고 바로 값을 할당할 수 없다 (초기화X)
값을 할당(메모리에 올리는것)하는 것은 함수를 호출하는 쪽에서 가능하다 [값 = value] +매개변수(=파라미터=인자)는 여러개의 변수 선언이 가능


7. 함수는 어떻게 만드는가? (함수 정의)

returnType 함수명 (parameter=매개변수=인자) 
	함수 호출  실행  내용;
}

/*
함수는 꼭 클래스 안에 만들어야한다 (메인함수 안에 만들지 말것)
함수명은 마음대로 지을 수 있음

Parameter = 인자, 매개변수. 파라미터에는 변수 선언이 온다.(메모리 할당)
파라미터에서 변수 초기화를 할 수 없다.
파라미터에는 변수의 선언이 여러개가 올 수도 있고, 없을 수도 있다.
*/


//retrunType이 void인 경우 -> 값을 반환하지 않음을 의미
void 함수명 (parameter) //Parameter  {
	함수 호출  실행  내용;
} 

//returnType이 void가 아닌 경우 (void가 아닌 9개의 데이터타입)
int 함수명 (parameter) //Parameter {
	함수 호출  실행  내용;
	return abcde;     //반드시 값의 반환이 있어야한다.
}


8. 함수는 어떻게 써먹는가?(함수 호출)

함수명(value); <- 값으로 함수 호출  

//전달할 내용은 만들어진 함수의 파라미터의 데이터 타입과 일치해야한다
//메인함수의 경우는 만들고 정의하는것이며, 호출은 JVM이 자동으로 한다

1. 함수 호출  파라미터로 (value)전달 
2. 함수 실행  메모리 방을 만들고, 함수의 실행이 끝나면 만들었던 방은 사라진다 (= 매개변수 소멸)
3. 새로운 함수를 호출하면 새로운 메모리 방을 만들고, 실행이 끝나면 똑같이 메모리 공간은 소멸


9. 아래의 함수를 만드시오

함수이름: starPrint
매개변수: type 1개
기능: 매개변수에 3를 전달하면 3층 석탑, 5를 전달하면 5층석탑
EX) 3전달시 3층석탑

★★
★★★

5전달시 5층석탑 ★
★★
★★★
★★★★
★★★★★


// 3 넣은 결과

public static void main(String[] args) {
		
		starPrint(3);	
}
	
public static void starPrint(int num) {
		
        for(int i = 1; i <= num; i++) {
		    for(int j = 1; j <= i; j++) {
			    System.out.print("★");
		    }System.out.println();
	    }
    }
}

=================================================================
// 5 넣은 결과

public static void main(String[] args) {
		
		starPrint(5);	
}
	
public static void starPrint(int num) {
		
        for(int i = 1; i <= num; i++) {
		    for(int j = 1; j <= i; j++) {
			    System.out.print("★");
		    }System.out.println();
	    }
    }
}


10. 아래의 함수를 만들고,해당함수를 호출하여 확인하시오

함수이름: getGrade()
매개변수: double type 1개
리턴: 수 우 미 양 가 중 하나의 char 타입


public static void main(String[] args) {
	
	int kor = 70;
	int math = 60;
	int eng = 90;
	 
	int total = math + kor + eng;
	double avg = total / 3.0;
	
	System.out.println(getGrade(avg))
}
public static char getGrade(double avg) {

	char a;   // '수우미양가' 를 담을 변수 선언
	 
	if(avg >= 90) {
		a = '수';
	}else if(avg >= 80) {
		a = '우';
	}else if(avg >=70) {
		a = '미';
	}else if(avg >= 60) {
		a = '양';
	}else {
		a = '가';
	}
		
	return a; /* a말고 return을 써도 되지만 (종료를위한)return문을 너무 남발하는건 좋은코드가 아님 
		    변수선언을 하고 마지막에 return을 주는게 더 좋음 */
======================================================
 


11. 매개변수 하나를 받아 원의 넓이를 리턴하는 함수를 작성하시오


// 1번 (me)
public static void main(String[] args) {
		
	circle(3.5);	
}
	
public static double circle(double r) {
		
	double circleRadius = r*r*Math.PI;

	System.out.println(circleRadius);
    
	return circleRadius;
}
=========================================
  21.991148575128552

// 2번 (teacher)
public static void main(String[] args) {

	double area = getCircleArea(10.0);
	System.out.println("원의 넓이는 " + area);
		
}
public static double getCircleArea(double r) {

	double area = r*r*Math.PI; // 아님 어차피 상수(남들이 수정하면 안되는 고정 값)니까 final double PI = 3.14; 로 변수초기화 해줘도 가능
	return area;
=========================================
 원의 넓이는 314.1592653589793


12. 매개변수 두개를 받아, 사각형의 넓이를 리턴하는 함수를 작성하시오

public static void main(String[] args) {

	square(2.5, 3.5);	
}
	
public static double square(double width, double height) {
		
    double squareArea = width*height;

	System.out.println(squareArea);

	return squareArea;
}
=========================================
  8.75