| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 문자열
- 자바
- 상속
- 다형성
- 이중 배열
- scanner
- 이클립스
- 배열
- javascript
- Integer.MAX_VALUE
- jsp
- super()
- 삼항 연산
- 메소드
- Integer.MIN_VALUE
- docker
- Break
- extends
- 상수
- arraylist
- interface
- Else If
- 오버로딩
- 삼항 연산식
- for문
- rs.next()
- 2차원 배열
- If
- 인터페이스
- 중첩for문
- Today
- Total
개발로드
★KDT 2024-01-05☆ 본문
혼자공부하는자바 연습문제

Scanner를 이용해 문자열로 숫자를 받아 정수형으로 변환 후에 덧셈을 진행함.

Scanner를 이용해 문자열로 정보를 입력받아 출력문과 번갈아 가면서 출력함

byte는 산술연산을 하면 int타입으로 변환이 되어서 11줄 에러발생

증감연사자가 변수 앞에 붙으면 연산전에 증감을 실행, 변수 뒤에 붙으면 연산후에 증감을 실행해서 변수값 변동은 없다


나머지를 구해서 백의 자리를 제외한 나머지 부분은 버리는 코드

int타입의 산술연산에서 소수자릿수를 표현하고싶다면, 피연산자를 double로 캐스팅을 해줘야 함

Scanner를 사용해서 입력 값을 double타입으로 받아 실수연산을 진행, if-else 문으로 두번째 수 입력 값에 따라 다른 결과내용을 출력

var2와 . 과 var3을 더하면 문자열로 "3.14"가 되서 double타입 연산을 할 수가 없기 때문에 (var2 + "." + var3)를 double타입으로 형변환을 하고 연산을 진행시켜준다

아이디와 비밀번호를 Scanner로 둘다 문자열로 받아서 비밀번호만 Int.parseInt()로 int타입으로 변환함
if else조건식으로 아이디와 비밀번호 일치여부로 로그인 성공, 실패 판단
★주의할점★
- name과 "java"의 일치여부를 확인할 때, 반드시 .equals() 메소드를 이용해야한다
- 그 이유는 "==" 메소드로 비교하면 nextLine()로 받은 name은 String 객체로 name이 참조하는 번지수와 ""java"는 서로 일치하지 않기 때문에 순수 문자열만을 비교하는 .equals() 메소드를 사용해야한다
★ ==과 equals ★
1. == : 왼쪽과 오른쪽이 같다.
스택에 있는 변수에 담긴 값이 같은지 비교
ex) int x=15, y=15;
boolean result = (a==b); //true
String name = "원중";
String name1 = new String("원중"); //false
name.equals(name1); //true
name == name1 => 스택에 있는 변수에 저장된 주소값이 같은가 비교
n.equals(name1) => 변수가 가리키고 있는 내용이 같은가 비교
2. 문자열을 비교
문자열1.equals(문자열2) => 문자열1과 문자열2의 내용이 같은지 비교 대소문자 구분
문자열1.equalsIgnoreCase(문자열2) => 대소문자를 구분하지 않고 내용이 같은지 비교
★제어문★
- 조건문 : 조건식에 따라 다른 실행문을 실행하기 위해 사용
ex) if, if~else, if~else if, switch
- 반복문 : 반복적인작업
ex) for, while, do~while
- break, continue
조건문

NaN과 Infinity
System.out.println(7/0);//ArithmeticException: / by zero
System.out.println(7/0.0);//Infinity(무한대)
int a = 7;
double b = 0.0;
System.out.println((a/b) + 3); //Infinity
System.out.println(7 % 0); //ArithmeticException: / by zero
System.out.println(7 % 0.0); //NaN
System.out.println((a % b) + 3); //NaN
- Infinity (무한대)
. 왼쪽의 피연산자(값)가 정수이고 오른쪽의 피연산자(값)이
0 일 경우는 나눗셈을 하면 ArithmeticException 예외가 발생 됨
그러나 왼쪽의 피연산자(값)가 정수 또는 실수이고 오른쪽의 피연산자(값)이
0.0 일 경우는 나눗셈을 하면 예외가 발생되지 않고 결과가 Infinity가 됨
- NaN(Not a Number)
. 왼쪽의 피연산자(값)가 정수이고 오른쪽의 피연산자(값)이
0 일 경우 나머지 연산을 하면 ArithmeticException 예외가 발생 됨
그러나 왼쪽의 피연산자(값)가 정수 또는 실수이고 오른쪽의 피연산자(값)이
0.0 일 경우는 나머지 연산을 하면 예외가 발생되지 않고 결과가 NaN이 됨
- 문제는 Infinity 난 NaN 상태에서 계속해서 연산을 수행하면 어떤 연산을 하더라도
결과는 계속해서 Infinity와 NaN이 됨
1) 해결 방법
- Infinity 또는 NaN인지 확인하고 처리
- Double.isInfinity(값) : 값이 infinity면 true, 아니면 false
- Double.isNaN(값) : 값이 NaN이면 true, 아니면 false

'JAVA' 카테고리의 다른 글
| ★KDT 2024-01-09☆ (1) | 2024.01.09 |
|---|---|
| ☆KDT 2024-01-08★ (0) | 2024.01.08 |
| ☆KDT 2024-01-04★ (2) | 2024.01.04 |
| ★KDT 2024-01-03☆ (0) | 2024.01.03 |
| ☆KDT 2024-01-02★ (1) | 2024.01.02 |