-
변수: 메모리(RAM)에 값을 기록하기 위한 공간

학원에서 개강 전 제공하는 강의로 예습 진행 중이다. 수업을 듣기 전에 생활코딩 자바 기본강의를 1회 완료하고 들으니 눈에 익은 것들이 간간히 보인다.
가장 기본이라지만 System.out.println(); 같은 것...
사용하면서 >println<은 대체 뭘까 궁금했는데 출력메소드에 대해서도 배웠다.
출력메소드
- System.out.print()
: ()안의 변수, 문자, 숫자, 논리 값을 모니터에 출력해주는 메소드
- System.out.println()
: print문과 동일하게 출력해주지만 출력 후 자동으로 출력창에 줄바꿈을 해주는 메소드
- System.out.printf("%형식", 변수 등)
: 정해져 있는 형식에 맞춰서 그 형식에 맞는 값(변수)을 줄바꿈하지 않고 출력
처음 본 메소드는 Scanner. 입력란 작성에 사용하는 건데 이 강의에서는 지속적으로 나오는 듯하다.
Scanner sc = new Scanner(System.in);
- int = sc.nextInt();
- str = sc.nextLine();
- cha = sc.next().charAt(0);
- double = sc.nextDouble();
문자를 읽어오는 메소드를 제공하지 않기 때문에, 첫번째 문자를 읽어오는 메소드를 이용한다는 사실이 흥미로웠다.
※문제. 키보드로 원의 반지름 값을 정수형으로 입력 받고 원의 둘레와 면적을 계산하여 소수점 이하 1자리까지만 출력하는 코드를 작성하시오.
123456public void method() {int r = 5;double pi = 3.14;System.out.println("원의 둘레: " + Math.round(2 * r * pi*10.0)/10.0);System.out.println("원의 면적: " + r*r*pi);cs 앞서 이야기한 Scanner를 사용해야 하는 문제였는데, '소수점 이하 1자리까지만'에 정신이 팔려 해당 코드를 짜는 데에만 정신이 팔렸다. 구글링을 통해 round 함수를 이용해 풀었는데, 이렇게 풀게 되면 뒤에 *10.0, /10.0을 해야 하는 번거로움이 있다.
12345678910public void method2() {Scanner sc = new Scanner(System.in);System.out.println("원의 반지름 입력 : ");int rad = sc.nextInt();double pi = 3.14;System.out.println("반지름이 " +rad+ "인 원의 둘레 : " + 2*rad*pi );System.out.println("반지름이 " +rad+ "인 원의 면적 : " + rad*rad*pi );}cs 훨씬 깔끔한 코드. 대신 이렇게 하면 소수점 이하 1자리까지 계산이 아닌, 주르륵 소수점 이하 수가 나온다. 이때 활용해야 하는게 출력메소드.
1234567891011public void method2() {Scanner sc = new Scanner(System.in);System.out.println("원의 반지름 입력 : ");int rad = sc.nextInt();double pi = 3.14;System.out.printf("반지름이 %d인 원의 둘레 : %.1f\n", rad, 2*rad*pi);System.out.printf("반지름이 %d인 원의 면적 : %.1f\n", rad, rad*rad*pi);}cs \n: 한 줄 띄라는 의미.
※문제. 학생들의 신장 평균을 조사하려고 한다. 세 명의 학생의 키를 실수형으로 입력 받아 키의 평균을 정수형으로 출력하시오.
1234567891011121314public void method3() {Scanner sc = new Scanner(System.in);System.out.println("첫번째 학생의 키 입력 : ");double height1 = sc.nextDouble();System.out.println("두번째 학생의 키 입력 : ");double height2 = sc.nextDouble();System.out.println("세번째 학생의 키 입력 : ");double height3 = sc.nextDouble();int avg = (int)(height1+height2+height3)/3;System.out.println("학생들의 키 평균은 : "+ avg);}cs Scanner로 총 세가지 값을 받아서 평균을 구하는 문제.
여기서 '정수형'으로 출력하라고 문제에 나왔으므로 평균값을 구하는 때에 int를 사용하고, double인 세 값을 int로 강제 형변환을 하는 것에 유의해야 한다.
강제로 형변환시, 값 앞에 () 소괄호를 치고 그 안에 변환할 형을 넣어줘야 한다.
※문제. 키보드로 길이가 5인 문자열을 입력 받아 각각의 문자의 유니코드를 출력하시오.
1234567891011public void method4() {Scanner sc = new Scanner(System.in);System.out.print("단어 입력 : ");String str = sc.nextLine();System.out.println(str.charAt(0) + ":" + (int)str.charAt(0));System.out.println(str.charAt(1) + ":" + (int)str.charAt(1));System.out.println(str.charAt(2) + ":" + (int)str.charAt(2));System.out.println(str.charAt(3) + ":" + (int)str.charAt(3));System.out.println(str.charAt(4) + ":" + (int)str.charAt(4));}cs 단어 전체를 받아서 첫번째 문자, 두번째 문자,... 이렇게 총 다섯 개의 문자를 추출해서 해당 문자의 유니코드를 출력하는 문제다.
답안은 위와 같았는데, 나는 생활코딩 강의 들으면서 배웠던 반복문을 활용해봤다.
1234567891011public void method4() {Scanner sc = new Scanner(System.in);System.out.print("단어 입력 : ");String str = sc.nextLine();int i = 0;while(i <= 4) {System.out.println(str.charAt(i) + " : " +(int)str.charAt(i));i = i+1;}}cs 뿌듯^^
확실히 반복문을 사용하면 더 직관적이고 간단한 예쁜 코드가 나온다.
'혼자 있는 방 > Java' 카테고리의 다른 글
Repetitive(반복문) 2 (0) 2021.05.02 Repetitive(반복문) 1 (0) 2021.04.30 Conditional(조건문) (0) 2021.04.30 Operator(연산자) (0) 2021.04.28 Java 독학 시작 (0) 2021.04.24 댓글