코딩딩/Java

자바의 데이터 입력 방법, 배열, 각종 연산자

전낙타 2023. 6. 28. 00:37

 

학습 목표

 

  • 키보드로부터 데이터 입력받는 방법에 대해 설명할 수 있다.
  • 1차원 및 다차원 배열에 대해 설명할 수 있다.
  • 산술 연산자 및 대입 연산자에 대해 설명할 수 있다.
  • 증가 연산자 및 감소 연산자에 대해 설명할 수 있다.

 

학습 내용

 

Scanner 객체와 키보드로부터 데이터 입력

 

여기에서는 객체를 일종의 변수라고 간주하고 메소드는 함수로 간주함.

Scanner 객체를 사용하기 위해서는 프로그램 상단에 import java.util.Scanner; 문을 작성함

키보드로 부터 데이터를 입력받아 변수에 저장하기 위해서는 Scanner 객체를 생성함

Scanner 객체를 사용해서 키보드로부터 데이터를 입력받아 변수에 저장함.

 

데이터의 자료형에 따라 다음과 같음 방법(함수,메소드)을 사용함

char형을 직접 지원하는 메소드는 없으므로 문자열로 입력받아 첫번째 문자를 대입함

String형의 next()는 데이터 입력후 엔터를 치면 입력스트림버퍼에서 공백(빈칸, 탭, 엔터) 단위로 데이터를 입력받음

입력 스트림 버퍼에는 데이터 이외의 공백(빈칸, 탭, 엔터)이 남아있어 다음번의 nextLine() 실행 시 입력 데이터로 처리되므로 주의해야 함

String 형의 nextLine()는 데이터 입력 후 엔터를 치면 입력 스트림 버퍼에서 공백 (엔터) 단위로 데이터를 입력받음

 

변수의 자료형에 따라 사용되는 함수의 종류

 

Scanner 실습

파이썬은 input이라는 입력 함수가 있는것과는 달리 Scanner라는 객체를 생성해줘야 하는 부분이 특이한 것 같다.

 

클래스 inputStreamReader와 클래스 BufferedReadder의 readLine()을 이용한 문자열 입력 방법도 있다.

일반적으로 숫자를 직접 입력받을 수 있는 메소드가 없으므로 문자열로 출력함

예외처리를 위한 throws IOException을 추가함

 

배열(Array)

 

여러 개의 같은 자료형의 변수를 묶어 놓은 것. 많은양의 데이터를 차례대로 다룰 떄 반복구조와 함께 사용하면 편리함.

각 배열은 해당 자료를 담고 있는 순서인 인덱스를 가지고 있다.

 

배열 선언 방법

 

배열 선언과 반복문 사용.

 

자바에서의 2차원 배열 사용의 예

배열 a[0][0] = 10, a[0][1] = 20, a[0][2] = 30, a[1][0] = 40, a[1][1] = 50, a[2][0] = 10,

2 60    
1 40 50  
0 10 20 30
  0 1 2

 

코드

 

배열의 요소수를 구하기 위해서는 length를 사용함

 

파이썬과 비슷해보이지만 배열의 Y 방향도 구할 수 있다는게 흥미롭다.

 

산술 연산자 및 대입 연산자

 

자바에서 수치 계산에 사용하는 연산자는 다음 표와 같음

연산자 기능 사용법 의미
+ 더하기 a = b+c b와 c를 더한값을 a에 대입
- 빼기 a = b-c b와 c를 더한값을 a에 대입
* 곱하기 a = b*c b와 c를 곱한값을 a에 대입
/ 나누기 a = b/c b와 c를 나눈값을 a에 대입 (c가 0이면 에러)
% 나머지 a = b%c b와 c를 나눈 나머지를 a에 대입 (c가 0이면 에러)
= 대입 a = b b값을 a에 대입

 

수치 계산에 사용하는 기타 연산자는 다음과 같다

메소드 기능 의미
Math.pow(a,b) a^b 2^3 = 8
Math.sqrt(a) √a √16 = 4
Math.cbrt(a) ∛a ∛8 = 2
Math.abs(a) |a| |-4| = 4

 

대입 연산자는 다음 표와 같음

연산자 기능 사용법 의미
+= 더한값을 대입 a +=b a = a+b
-= 뺀 값을 대입 a -=b a = a-b
*= 곱한 값을 대입 a *=b a = a*b
/= 나눈 값을 대입 a /=b a = a/b
%= 나머지를 대입 a %= b a = a%b

 

2차원 배열 응용

주의사항

 

파이썬과 자바의 약간의 괴리감에 익숙해지기 위해 좀 더 많이 코드를 쳐봐야할것 같다.