첫날에 배운것을 응용하여 문제 풀어보기
- 배수 출력하기
public class Study1 {
public static void main(String[] args) {
int a = 6; // 배수는 -> 1 2 3 6
for (int i = 1; i <= 6; i++) { // i는 1, i가 6보다 작거나 같으면, i증가
if (a % i == 0) {
// 만약 a를 i로 나눴을 때 나머지가 0이면
System.out.println(i); //i 출력
}
// *배수 출력인데 출력이 높은 수부터(거꾸로) 나오게 하기.
int a = 6; // 1 2 3 6
for (int i = a; i > 0; i--){
// i는 a이다, i가 0보다 클 때, i는 감소
//i = 6 5 4 3 2 1 / 0
if (a % i == 0) {
//만약 a를 i로 나눴을 때 나머지가 0이면
System.out.println(i); //i출력
}
- i가 4나 5였을 때에는 나머지가 0이 아니기 때문에 출력되지 않는다.
- a의 값을 다른 수로 바꾸면 그 수 의 배수를 출력할 수 있다.
- 배수 출력하기2
int a = 12;
if(a % 2 == 0 && a % 3 ==0){
System.out.println("2와 3의 배수");
} else if (a % 2 == 0) {
System.out.println("2의 배수");
}else if (a % 3 == 0){
System.out.println("3의 배수");
}
- 2차배열 안의 수 출력하기
public class Test {
public static void main(String[] args) {
int[][] arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
Q1. 123456789 순으로 출력하기.
for (int i = 0; i < arr.length; i++){
// i는 0, i가 배열 길이(3)보다 작으면, i증가
for (int j = 0; j < arr.length; j++){
// j는 0, j가 배열 길이(3)보다 작으면, j증가
System.out.println(arr[i][j]);
}
}
// arr[0][0] arr[0][1] arr[0][2]
// arr[1][0] arr[1][1] arr[1][2]
// arr[2][0] arr[2][1] arr[2][2] 이렇게 읽고 출력하는 것.
Q2. 987654321 순으로 출력하기.
for (int i = arr.length; i > 0; i--){
// i는 배열길이(3), i가 0보다 크면, i 감소
for (int j = arr.length; j > 0; j--){
// j는 배열길이(3), j가 0보다 크면, j감소
System.out.println(arr[i-1][j-1]);
// 배열 길이는 3이지만 배열을 읽을 때는 0, 1, 2 이 순으로 읽는다.
// 그렇기 때문에 출력할 때 [2][2]부터 읽으려면
// [i-1], [j-1]로 넣어야 한다.
// [3-1], [3-1]
// [2], [2]
}
}
--> 처음 오류. int i = arr.length -1; i > 0; 방식으로 넣었다.
이렇게 했을 때에는 길이가 2부터 읽기 시작하기 때문에 2, 1 값만 돌고 0값을 읽지 않은 채 끝난다.
따라서 i > 0이 아니라 i >= 0 로 크거나 '같을때' 까지 읽을 수 있도록 해서
3개를 모두 읽을 수 있도록 해야한다.
=> for (int i = arr.length-1; i >= 0; i--){
for (int j = arr.length-1; j >= 0; j--){
System.out.println(arr[i][j]);
}
}
또다른 방법으로 987654321 출력하기
for (int i = arr.length; i > 0; i--) {
// arr.length = 3 -> 3, 2, 1
for (int j = arr[i-1].length; j > 0; j--) {
//arr.length로 하면 길이가 3이 들어가는 거니까 3 2 1로 돌아가고
// arr[i-1].lenght 로 하면 []이 배열 안의 값이 [3-1], [2-1], [1-1]이
들어가서 [2], [1], [0]이 되므로 둘 다 987654321이 출력된다.
System.out.println(arr[i - 1][j - 1]);
// arr[i-1] = 2 arr [j-1] =2
// arr[i-1] = 1 arr [j-1] = 1
// arr[i-1] = 0 arr [j-1] = 0
--> 이렇게 출력될 값을 쳐보는 것도 필요하다.
Q3. 147258369 순서로 출력하기
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[j][i]); // j와 i 바꾸기
// i가 0일때 j가 0, 1, 2 돌아가니까 j와 i를 바꾸면 세로로 출력받을 수 있다.
}
}