반응형
5-2. 반복문 마지막에 중첩반복문에 대해서 공부하였다.
오늘도 이어서 중첩반복문에 대해서 알아보았다.
중첩반복문
➰Quiz - 구구단을 3단씩 끊어서 출력하기
public class Quiz15 {
public static void main(String[] args) {
//힌트 -> 출력은 가로 or 세로로만 가능합니다.
//정렬은 \t 8칸 띄어쓰기
//한줄을 한번에 출력.
for(int i = 1; i <= 9; i+=3) {
for(int j = 1; j <= 9; j++) {
System.out.printf("%d X %d = %d\t", i, j, i*j);
System.out.printf("%d X %d = %d\t", i+1, j, (i+1)*j);
System.out.printf("%d X %d = %d\n", i+2, j, (i+2)*j);
}
System.out.println();
}
}
}
-> 어렵다고 생각했는데 막상 답을 보니 별거 아니었다.
-> 출력을 한줄만으로 사용하여 멋지게 만들고 싶었는데 나의 욕심이었나보다.
➰Quiz - 가로/세로 입력받아 박스만들기
import java.util.Scanner;
public class Quiz16 {
public static void main(String[] args) {
/*
* 정수형태로 입력을 2개 받는다.
* 첫번째 - 가로길이, 두번째 - 세로길이.
*
* 입력받은 가로 세로 길이의 사각형을 출력하면됨.
* 단, 윤곽만 출력.
*
* 힌트 -> 1행, 마지막행, 1열, 마지막열만 출력
* 공백도 문자.
*/
Scanner scan = new Scanner(System.in);
System.out.print("가로>");
int width = scan.nextInt();
System.out.print("세로>");
int height = scan.nextInt();
for(int i = 1; i <= height; i++) {//세로(행)
if( i == 1 || i == height) {//처음과 끝세로열만 모두 출력.
for(int j = 1; j <= width; j++) {//가로(열)
System.out.print("*");
}
}
else { //중간열들..
System.out.print("*");
for(int space=1; space <= width-2; space++) { //가로 개수에서 -2한만큼 공백 출력
System.out.print(" ");
}
System.out.print("*");
}
System.out.println();
}
scan.close();
}
}
나는 위에 처럼 코드를 구성해보았는데
아래와 같이 더 간단하게 만들 수 있었다.
for(int i = 1; i <= height; i++) {
for(int j = 1; j <= width; j++) {
if(i == 1 || i == height || j == 1 || j == width) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
➰중첩반복문 - 피라미드 별 찍기
public class MultiForEx02 {
public static void main(String[] args) {
//회전할때마다 횟수가 변하는 중첩반복문
/*
* *
* ***
* ******
* ********
* **********
*/
int star = 5;//변수를 쓰는 이유 중 하나.
//변수 값만 바꾸면 규칙에 맞게 출력값이 한번에 변함.
for(int i = 1; i <= star; i++) {
//공백
for(int k = 1; k <= star-i; k++) {
System.out.print(" ");
}
//별
for(int j = 1; j <= i*2-1; j++) {
//1일때 2바퀴,2일때 4바퀴 이런식으로 조건이 달라지는 반복문에 초점을 둔다.
System.out.print("*");
}
System.out.println();
}
/*
* 뒤집은 피라미드.
* ex) 5열
* i - 공백j - 별j
* 1 - 0 - 9
* 2 - 1 - 7
* 3 - 2 - 5
* 4 - 3 - 3
* 5 - 4 - 1
*
* 규칙이 뭘까?
* (열-i)*2+1
*
*/
System.out.println("---------------");
for(int i = 1; i <= star; i++) {//star(열)만큼 for문
for(int k = 1; k < i; k++) { // 공백찍기. 2번째 줄부터 공백나오도록..
//for(int k = 1; k <= i-1; K++) 강사님의 코드
System.out.print(" ");
}
for (int j = 1; j <= 2*(star-i)+1; j++)//(열-i)*2+1 조건으로 계속 한개씩 별찍기.
{
System.out.print("*");
}
System.out.println();
}
}
}
💡 i가 1일때 2바퀴,2일때 4바퀴 이런식으로 조건이 달라지는 반복문에 초점을 둔다.
💡변수로 star값을 입력하면 star값만 변경하면 규칙에 맞게 출력값이 변한다.
= 변수를 쓰는 이유 중 한다.
➰입력받은 수까지의 소수를 출력.
import java.util.Scanner;
public class MultiForEx03 {
public static void main(String[] args) {
//입력받은 수까지 소수를 출력.
//소수 -> 나누어 떨어지는 수가 1과 자기자신인 수.
//예) 5 -> 2 3 5
//입력받은 수까지 반복하고, 각 수를 자기 자신까지 나누면서 약수의 개수가 2개인 수
Scanner scan = new Scanner(System.in);
System.out.print("정수>");
int input = scan.nextInt();
int count = 0;
for(int i = 1; i <= input; i++) {
count = 0;
for(int j = 1; j <= i; j++) {
if(i%j == 0) { // j는 약수
System.out.println(i+"-"+j);
count ++;
}
}
//System.out.println("count"+count);
if(count == 2) {
System.out.println(i);
}
scan.close();
}
}
}
향상된 for loop
향상된 for loop는 아래와 같이 사용할 수 있다.
for(받을 변수 타입과 변수이름 : 배열이름){
}
for(int a : arr){
}
➰향상된 for loop의 사용
package day06;
public class EnhanceForEx {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
//일반 for문으로 실행
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//향상된 for문으로 실행
//for(받을 변수 타입과 변수이름 : 배열이름)
for(int a : arr) {
System.out.println(a);
}
System.out.println("----------------------");
String[] sArr = {"월", "화", "수", "목", "금"};
for(String s : sArr) {
System.out.println(s);
}
System.out.println("----------------------");
//배열 요소들의 합계와 평균을 소수 2자리 까지만 출력
int[] score = {34, 54, 23, 53, 65};
double sum = 0;
for(int num : score) {
sum += num;
}
System.out.printf("합계: %.2f\n", sum);
System.out.printf("평균: %.2f\n", sum/score.length);
System.out.println("합계: "+ String.format("%.2f", sum));
System.out.println("평균: "+ String.format("%.2f", sum/score.length));
}
}반응형
'국비지원 > JAVA' 카테고리의 다른 글
| [JAVA] 7-2. 반복문 continue (0) | 2022.09.28 |
|---|---|
| [JAVA] 7-1. 무한loop와 탈출문 break (0) | 2022.09.28 |
| [JAVA] 5-2. 반복문 for (0) | 2022.09.26 |
| [JAVA] 5-1. 배열과 반복문(while문), do-while문 곁들인.. (0) | 2022.09.26 |
| [JAVA] 4-2. 반복문 (while) (0) | 2022.09.23 |