티스토리 뷰

it분야의 끄적끄적/Java 계열의 프로젝트 및 글

JAVA 강의 2일차

김수한무거북이WA!두루미 2020. 1. 14. 11:45

Java는 기본적으로 100% 상속이 되고 있으며 최상위에 Object를 상속받고 있음.

 

 

unsigned를 명시하면 부호를 없앨 수 있으며 양의 범위를 확장할 수 있음.

signed는 기본적으로 적용되어 있음.

unsigned는 정수타입에만 사용이 가능함.

 

 

a!=b 와 a=!b의 차이점

a!=b : a와 b는 다르다.

a=!b : b가 아닌 것을 a에 할당함.

 

 

break 코드는 단독 if문에는 사용할 수 없으며 반복이 진행되는 경우에만 사용이 가능함.

반복문 내부에서 if문을 통해 break 코드를 사용하여 반복을 멈추는 것은 가능하다.

continue 코드와 같이 loop문에 사용됨.

 

 

continue 코드는 반복문 내에서만 사용할 수 있으며, 반복이 진행되는 도중에 continue 코드가 작동하면 반복문의 끝으로 이동하여 다음 반복으로 넘어감.

 

 

<-- -->

while 반복문 : for 반복문과 다르게 조건식과 수행해야할 중괄호 블럭만으로 구성되어 있으며 카운터가 필요한 경우에는 while 반복문보다는 for 반복문을 사용하는 것이 유리함.

while (조건식) {
    (조건식의 연산결과가 참인 경우 수행될 문장)
}

for 반복문으로 작성한 것을 while 반복문으로 수정하는 것도 가능하다.

아래는 어제 if 반복문으로 만든 종이접기를 while 반복문으로 바꾼 것이다.

class Paper {

    public static void main(String[] args) {

        int j = 0;  

        int i = 1;

        while (i <=500) {

            System.out.println("접은 횟수 :" + j);  

            System.out.println("사각형 갯수 :" + i);  

            j += 1;

            i *= 2;

        } 

    }

}

이중for문이 존재하는 것처럼 while 반복문 내부에도 while 반복문을 적을 수 있다.

이를 이중while문이라고 한다.

while (조건식1) {
    while(조건식2) {
        (조건식의 연산결과가 참인 경우 수행될 문장)
    }
}

아래는 이중while문을 이용하여 다시 작성한 구구단의 예제이다.

class While {

    public static void main(String[] args) {

        int i = 1;

        while (i<=9) {

            int j = 2;

            while (j<=9) {

                System.out.print(j + "*" + i + "=" + i*j + "\t");

                j++;

            }

            System.out.println("");

            i++;

        }

    }

}

 

 

<-- -->

do while 반복문 : while 반복문을 변화한 것으로 구조는 while 반복문과 같으나 중괄호 블럭을 먼저 수행한 후에 조건을 판단하는 것이 while 반복문과의 차이점이다.

do {
     조건식의 연산결과가 참일 경우에 수행될 문장
} while (조건식);

아래의 코드는 do while 반복문을 사용하여 작성한 계산기이다.

어제 작성한 계산기와의 차이점은 마지막에 재사용 여부를 물어보고 다시 시작을 할 수 있다는 차이점을 갖고 있다.

import java.util.*;

 

class DoWhile {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String loop;

 

        do {

            System.out.println("숫자1 입력");

            int a = sc.nextInt();

 

            System.out.println("연산자 입력");  

            String oper = sc.next();

 

            System.out.println("숫자2 입력");

            int b = sc.nextInt();

            double c;

  

 

            // 연산자 확인

            switch (oper) {

                case "+" :

                    c = a + b;

                    System.out.println(a + oper + b +"= "+ c );    

                    break;

                case "-" :

                    c = a - b;

                    System.out.println(a + oper + b +"= "+ c );    

                    break;

                case "*" :

                    c = a * b;

                    System.out.println(a + oper + b +"= "+ c );    

                    break;

                case "/" :

                    c = a / b;

                    System.out.println(a + oper + b +"= "+ c );    

                    break;

                default :

                    System.out.println("not operand");        

            }

            System.out.println("계속할거? : y | n");

            loop = sc.next();

        } while (loop.equals("y") |loop.equals("Y"));

    }

}

처음에 String 타입의 loop라는 변수를 선언하고 조건식이 참일때 실행되는 문장에 어제 만들어둔 계산기를 넣어둔다.

그리고 계산이 끝난 후에 재사용의 여부를 물어보고 loop변수에 y(=Y)나 n(=N)를 입력할 때, y(=Y)를 입력이 되면 계산기를 다시 이용하게 만들었다.

 

 

<-- -->

배열(Array)이란?

1. 동일한 데이터 타입을 메모리 상에 순차적으로 확보한 것.

2. 참조(reference) 타입의 변수 > 동적 메모리에 할당이 된다.

3. 순차적으로 일괄처리를 할 수 있음.

4. 메모리의 추가, 삭제가 힘든 특징이 있음.

5. 선언과 동시에 생성하는 것이 가능함

 

 

 

배열의 선언

(변수의 타입) [](변수의 이름)
(변수의 타입) (변수의 이름)[]

 

배열의 생성

(변수의 타입) [](변수의 이름)
(변수의 이름) = new (변수의 타입)[(배열의 크기)];

 

배열의 선언과 동시에 생성

(변수의 타입) [](변수의 이름) = new (변수의 타입)[(배열의 크기)];

(변수의 타입) (변수의 이름)[] = new (변수의 타입)[(배열의 크기)];

 

아래는 배열을 이용해서 1명의 성적을 계산하는 코드를 만들어보았다.

우선 배열은 하나의 타입의 변수만 받을 수 있기에 이름은 별개로 지정하였으며 각각의 성적을 입력하면 총점과 평균을 구하도록 설계하였다.

package Array;
import java.util.*;

public class Calculator {

    public static void main(String[] args) {

        //field 
        String name;
        int []score = new int[3];
        int kor, eng, math;
        double total;
        double avg;

       Scanner sc = new Scanner(System.in);

        //input
        System.out.println("input your name");
        name = sc.next();

        System.out.println("input your score(kor, eng, math)");
        for(int point=0; point<score.length; point++) {
            score[point]=sc.nextInt();
        }
        for(int point=0; point<score.length; point++) {
            total+=score[point];
        }

        kor = score[0];
        eng = score[1];
        math = score[2];
        avg = total /(score.length);

        System.out.println("name :"+name);
        System.out.println("kor :"+kor );
        System.out.println("eng :"+eng);
        System.out.println("math :"+math);
        System.out.println("total :"+total);
        System.out.println("average :"+avg);

    }
}

 

 

<-- -->

다차원 배열

위에서 본 배열은 1차원 배열이다. 하지만 1차원 배열이 아니라 다차원을 배열을 만들 수 있다.

앞에서 본 배열에서 대괄호 여러쌍을 추가해주면 다차원 배열을 만들 수 있다.

아래의 예시는 2차원 배열의 선언이다.

int [][]arr = new int[3][5]; > 3 * 5 사이즈의 배열

 

다차원 배열은 하나의 배열에 다른 배열이 들어간 것이므로 길이가 다른 배열을 넣는 것 또한 가능하다.

int [][]arr = new int[3][];

arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[4];

2차원 배열을 이용한 성적계산기를 만들어보았다.

처음에 몇 명인지 확인을 해서 배열의 크기를 결정하게 만들며

앞서 배운 do while 반복문을 사용해서 마지막에 재사용 유무를 물어본다

package Array;

import java.util.*;

 

public class MultiDimensionArray {

 

    public static void main(String[] args) {

 

        //field

        Scanner sc = new Scanner(System.in);

        String loop;

        String []sub = {"국어","영어","수학", "총점", "평균"};

 

        do {

            System.out.println("몇 명의 성적을 계산할 것인가?");

            int people = sc.nextInt();

 

            String []name = new String[people];

            double [][]score = new double[people][5];

 

            for(int i=0; i<people; i++) {

                System.out.println("이름을 입력하십시오");

                name[i]=sc.next();

                System.out.println("국어, 영어, 수학 순으로 성적을 입력하십시오.");

                for(int j=0; j<score[i].length-2; j++) {

                    score[i][j]=sc.nextInt();

                    score[i][3]+=score[i][j];

                }

                score[i][4]=score[i][3]/(score[i].length-2);

            }

 

            for(int i=0; i<people; i++) {

                System.out.println(name[i]);

                for(int j=0; j<score[i].length; j++) {

                    System.out.println(sub[j]+":"+score[i][j]);

                }

                System.out.println();

            }

            System.out.println("계속 진행할 것인가? : y | n");

            loop = sc.next();

        } while (loop.equals("y") |loop.equals("Y"));

 

    }

 

}

 

 

 

'it분야의 끄적끄적 > Java 계열의 프로젝트 및 글' 카테고리의 다른 글

Java 강의 6일차  (0) 2020.01.20
Java 강의 4~5일차  (0) 2020.01.16
Java 강의 3일차  (0) 2020.01.15
JAVA 강의 1일차  (0) 2020.01.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함