열심히 끝까지
디바이스 융합 자바(Java) day04 - 중첩반복문,배열 본문
-------------------------------
6/9 과제 강사님 답안
방법1
package class01;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 : ");
int a = sc.nextInt();
System.out.print("정수 : ");
int b = sc.nextInt();
if(a>b) {
int tmp = a;
a = b;
b = tmp;
}
int i;
for(i = a; i >= 1; i--) {
if(a % i ==0 && b % i == 0) {
break;
}
}
System.out.println(a + "와(과) " + b + "의 ");
System.out.println("최대공약수는 " + i + "이고");
System.out.println("최소공배수는 " + (a * b / i) + "입니다.");
}
}
-------------
방법2
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 : ");
int a = sc.nextInt();
System.out.print("정수 : ");
int b = sc.nextInt();
if(a>b) {
int tmp = a;
a = b;
b = tmp;
}
for(int i = a; i >= 1; i--) {
if(a % i ==0 && b % i == 0) {
System.out.println(a + "와(과) " + b + "의 ");
System.out.println("최대공약수는 " + i + "이고");
System.out.println("최소공배수는 " + (a * b / i) + "입니다.");
break;
}
}
}
}
--------------------------------
디버깅표
a b i i>=1
--------------------------
4 8 4 T << 바로 break; 중간문을 안만남
---------------------------------------
// 굳이 따로 변수를 만들어서 저장하지 않고 i 그대로 사용한다.
[중첩 반복문]
- 모든 제어문이 중첩되는건 당연하다.
하지만 3중첩은 거의 하지 않음. 개발자 코드 보기 힘들어짐...
-> 별찍기
=> 원래는 "디버깅표" 연습시키기 위해 타이틀이 저렇게 나옴
[구구단]
package class01;
public class Test02 {
public static void main(String[] args) {
// [중첩 반복문]
// 구구단
for(int a = 2; a <= 9; a++) {
// 2~9 => 8번 돈다
for(int i = 1; i <= 9; i++) {
// 9번 x 8번 => 72번
System.out.println(a + " x " + i + " = " + a * i);
}
System.out.println("-------------");
}
}
}
디버깅표
a a<=9 i i<=9
------------------------------------------------------
2 T 1 T 2 x 1 = 2
2 T 2 x 2 = 4
3 T 2 x 3 = 6
...
9 T 2 x 9 = 18
10 F ------------------
3 T 1 T 3 x 1 = 3
2 T 3 x 2 = 6
3 T 3 x 3 = 9
...
9 T 3 x 9 = 27
10 F ------------------
*last point*
안쪽 for문이 다 돌아야 바깥쪽 for문이 실행된다.
[별찍기]
*****
*****
***** 찍기
package class02;
public class Test03 {
public static void main(String[] args) {
for(int a = 1; a <= 3; a++) {
for(int i = 1; i <= 5; i++) {
System.out.print("*");
}
System.out.println();
}
}
}
-> 숫자로 변경
package class02;
public class Test03 {
public static void main(String[] args) {
for(int a = 1; a <= 3; a++) {
for(int i = 1; i <= 5; i++) {
System.out.print("(" + a + ", " + i + ")");
}
System.out.println();
}
}
}
디버깅표
a a<=3 i i<=5
------------------------------------------
1 T 1 T *
2 T *
.....
5 T *
6 F System.out.println();
2 T 1 T *
-------------------------------
*
**
***
****
***** 찍기
package class02;
public class Test04 {
public static void main(String[] args) {
for(int i = 1; i <= 5; i++) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
for(int i = 1; i <= 5; i++) {
for(int j = 1; j <= 6-i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
디버깅표
i i<=5 j j<=변수
-----------------------------------------------
1 T 1 T *
2 F 줄바꿈
2 T 1 T *
2 T *
3 F 줄바꿈
3 T 1 T *
2 T *
3 T *
4 F 줄바꿈
디버깅표
i i<=5 j ?
-------------------------------------------------
1 T 1 T *
2 T *
3 T *
4 T *
5 T *
6 F 줄바꿈
2 T 1 T *
2 T *
3 T *
4 T *
5 F 줄바꿈
3 T 1 T *
2 T *
3 T *
4 F 줄바꿈
-----------------------------------
j--로 실행
package class02;
public class Test05 {
public static void main(String[] args) {
for(int i = 1; i <= 5; i++) {
for(int j = 5; j >=i ; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
디버깅표
1 T 5 T *
4 T *
3 T *
2 T *
1 T *
0 F 줄바꿈
2 T 5 T *
4 T *
3 T *
2 T *
1 F 줄바꿈
3 T 5 T *
4 T *
3 T *
2 F 줄바꿈
-----------------------------------------
지난 날 수업
1. 출력, 주석
2. 변수 3요소 : 공간, "자료형", 식별자
3. 연산자 우선순위 -> 디버깅표
4. 제어문 : 조건문 / 반복문
---------------------------------------------------
오늘 자 수업
5. "배열" -> for문 "자료구조"
"서로 관련된 데이터를 한 공간에서 관리하면 좋겠다...."
==> 이래서 탄생한 것이 "배열!!"
- 자료형 int 뒤에 [](중괄호)를 쓰면 자료형을 저장하는 배열 만듦
- 서랍장에 2번째 칸 <- 이런 칸 하나하나를 배열에서는 index(인덱스)라고 함
- 인덱스는 무조건 [0]부터 시작! ★
☆배열 3요소★
1. 서로 관련된 데이터
2. 서로 동일한 자료형(int면 int, double이면 double, ..)
3. *몇 개인지 분명히 알아야합니다!*
ㄴ 이것때문에 많이 헷갈려 함
ㄴ 이래서 for문과 배열이 잘 어울림
package class06;
public class Test06 {
public static void main(String[] args) {
// [배열]
int stu1 = 80;
int stu2 = 90;
int stu3 = 85;
int [] stu = {80, 90, 85};
for(int i = 0; i < 3; i++) {
System.out.println("학생" + (i+1) + " : " + stu[i]);
}
// 서로 관련된 데이터를 한 공간에서 관리하면 좋겠다....
}
}
>>다음 사진에 에러!!! (위의 코드를 바꾸기 전 에러)
? Exception 이유 및 의미
- 범위 지정이 잘못되었습니다.
- 인덱스 3은 존재하지 않습니다.
- Test06의 17번째 줄에서 에러가 발생했습니다!
-------------------------------------------
package class06;
public class Test07 {
public static void main(String[] args) {
// 유지보수성이 좋지 않는 프로그램(사람이 바뀐 값을 직접 바꿔야하는 프로그래밍)
// 학생부 프로그램
int [] stu = {10,20,30,40,50,45,100};
// . -> 함수/키워드 : 반환값 - 제작자
for(int i = 0; i< stu.length; i++) { // 배열의 요소의 개수(==배열의 길이)
System.out.println("학생 " + (i+1) + "번의 성적은 " + stu[i] + "점");
}
}
}
*
? . -> 함수/키워드 : 반환값 - 제작자
ex ) hashCode() : int - Object
*
- 배열이름.length : 요소의 개수(배열의 길이)
--------------------------------------------------
- 배열을 쓰고 싶을 때 약식으로 표현이 가능하지만
미리 공간을 할당받아서 생성한다.
- 배열 객체는 초기화를 디폴트로 해준다!
ex ) *int[] arr = new int[5]*
ex ) sc.nextLine();
S(주어) : sc = 주어가 될 수 있는 것들은 객체!
주어가 될 수 있다는 것은 동사를 가질 수 있다는 뜻!
함수를 주체적으로 수행할 수 있다는 뜻!
V(동사) : nextLine()
O(목적어) : ()
str.equals("apple") <<
str=="빨강" -> 연산자의 대상은 변수인데,
str은 변수가 아닙니다! 객체였습니다!.
. >> 주어 == 함수가 주체적으로 수행 가능
package class06;
public class Test08 {
public static void main(String[] args) {
int[] arr = new int[5];
for(int i = 0; i < 5; i++) {
System.out.println(arr[i]);
}
// 1. 오류
// 2. 이상한 문자, 쓰레기값
// 3. 0 ☆★☆★ 답
}
}
------------------------------------------------
package class06;
import java.util.Scanner;
public class Test08 {
public static void main(String[] args) {
int cnt = 5; // 여기에 학생수 넣으시면 됩니다!
int[] arr = new int[cnt];
// 배열 쓰고 싶으니까 그만큼의 공간을 생성해줘!
Scanner sc = new Scanner(System.in);
int i = 0;
while(true) {
System.out.print("학생" + (i+1) +"성적입력 : ");
arr[i] = sc.nextInt();
if(arr[i] < 0 || 100 < arr[i]) {
// 경계값 검사!! ( 0과 100을 넣어봄으로서... )
System.out.println("1~100까지만 입력 가능!");
continue;
}
i++;
if(i == arr.length) {
break;
}
}
for(i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(수업내용)' 카테고리의 다른 글
디바이스 융합 자바(Java) day06 - 함수,오버로딩 (0) | 2022.06.14 |
---|---|
디바이스 융합 자바(Java) day05 - 버블정렬,최대값 찾기,이진검색,배열 이진검색,flag 변수 (0) | 2022.06.13 |
디바이스 융합 자바(Java) day03 - 제어문 (0) | 2022.06.09 |
디바이스 융합 자바(Java) day02 - 디버깅표,연산자,Scanner,유효성검사,제어문,교환알고리즘 (0) | 2022.06.08 |
디바이스 융합 자바(Java) day01 - 변수,자료형,연산자 (0) | 2022.06.07 |