본문 바로가기
Java 및 JSP

사전수업 Day2: Java 간단한 문제와 사용자에 입력 받기

by jane.dev 2021. 5. 24.
반응형

간단한 문제

7451초를 "??시간 ??분 ??초 입니다."로 출력하기

 

내가 생각한 방법:

second = minute * 60 = hour * 3600

hour = time / 3600

minute = (time % 3600) / 60

second = time - ( hour * 3600) - ( minute * 60)

 

선생님의 답안:

논리적으로 생각하게 함

100초를 1분 40초 라고 생각하는 이유는 100초를 60초로 나누면 몫 1에 나머지 40이 생김

7451초를 분-초 로 계산하기 위해서는 분이 몫을 가져가고, 초가 나머지를 가져간다고 생각하면 됨

하지만 시간-분-초 로 계산하려면 위에 방법으로 하면 안됨

 

→ 시간을 계산하고 분을 계산할때 앞에서 계산된 시간을 제외해야함

    초는 60으로 계산하고 남은 나머지는 60보다 큰 수가 나올 수 없기 때문에 60의 나머지로 계산

 

System.out.printf에서 printf는 특정한 형태로 출력됨을 알려주는 것_변수와 문자열을 함께 출력할 때 사용하기 편함

  • %d: 정수 
  • %s: 문자
  • %n: 줄넘김(\n과 같은 의미이지만, 운영체제 상 %n을 사용하는 것이 좋음)

 

위의 문장은

 

과 같은 의미이지만 작성하기에 더 편함

 

예시)

 

 

사용자에게 입력 받기

사용자에게 무언가 물어보고 입력받기 위해서는 Scanner를 사용

 

class 문법: 대문자로 시작하는 데이터 타입은 '변수명 = new 데이터 타입명()'으로 작성

Scanner sc = new Scanner( );

String s = new String( ); → String s = " ";  도 가능

 

Scanner(API_첫글자가 대문자로 시작): Scanner를 사용한다고 선언 - Scan 할 대상이 필요함

Scanner: 데이터 타입

sc: 변수명(참고_sc.: 'Scanner를 통해서' 라는 의미)

 

import: 클래스의 위치를 알려주는 것(+ Scanner를 사용하기 위해 외부 클래스를 호출하는 것이라고 함: 다른 블로그에서 읽은 내용)

 

Scanner를 통해서 입력받게 해야함 → Scanner에 명령을 내림

next( ): 문자열을 입력 받음

nextInt( ): int 정수값을 입력 받음

String name = sc.next( ): Scanner를 통해서 변수에 저장

→ 사용자가 입력을 하고 enter를 입력하면, 컴퓨터는 사용자의 이름을 문자열로 인식하면서 읽음_enter 전 까지

     이후, sc.next( ) 괄호 내부에는 enter 값만 남고, 읽을 수 있는 다른 내용이 들어올 때까지 멈춤(읽을 수 있는 값이 없기 때문에)

 

Scanner를 통해서 간단한 문제 변형

사용자에게 초를 입력받아 문제를 해결