본격적으로 언어학습 주차에 들어왔다. java를 새 버전으로 다시 깔고 intellij도 community버전에서 ultimate 버전으로 바꿨다. 항해99를 들어오고 본격적으로 java를 시작한다.
기존 강의를 들으면서 java 8(=1.8)버전과 openJDK zulu 8 버전이 설치 되어있었다.
문제점 : 새로 배우려면 java 17버전을 받으라고 하는데 버전이 중복 설치 되어도 문제가 없을까가 고민이 되었다.
시도 및 해결 : 검색해보니 중복 설치해도 문제는 없고 오히려 버전별로 이동하는게 가능했다.
17버전과 8버전을 폴더를 나눠 따로 설치 한 뒤, 환경변수만 그때그때 조정해주면 된다.
고급시스템설정 - 환경변수 - 시스템변수
에서
JAVA_HOME 과 Path 를 버전에 맞게 폴더를 지정하면 깔끔하게 버전 변경이 가능했다.
cmd에서 java -version
을 입력하면 버전확인이 가능하다.
문제 풀면서 여기서 한번 막혔다.
3-6. 아래는 화씨(Fahrenheit)를 섭씨(Celcius)로 변환하는 코드이다.
변환 공식이 'C = 5/9*(F-32)'라고 할 때, 빈 칸에 알맞은 코드를 넣으시오.
단, 변환값은 소수점 셋째자리에서 반올림하며, Math.round() 함수를 사용하지 않고 처리할 것!
class Exercise3_6{
public static void main(String[] args){
int fahrenheit = 100;
float celcius = (/*빈 칸*/);
System.out.println("Fahrenheit:"+fahrenheit);
System.out.println("Celcius:"+celcius);
}
}
문제점 : Math.round()를 사용하지 않고 반올림하려니 방법을 못 찾았다.
시도 :
일단 처음에 계속 0이떠서 float으로 통일 하는 방법을 찾았다.
float celcius = ((5/9F * (fahrenheit-32))
로 하니 37.77778이 출력
5/9의 결과값이 0으로 인식되어 float으로 통일하기 위해 5/9 뒤에 F를 붙였다.
답을 찾지 못해 java 소수점 반올림으로 검색해보았으나
String.format("%.2f", 변수); // String.format("format", 변수)
Math.round((변수*100)/100.0);
만 나올뿐 문제에서 원하는 답은 아니었다.
알게된 것 : flaot 에서 0으로 인식되는 값은 f를 분모 뒤에 붙이거나 f값으로 나눠주면 된다.
0.5를 더하고 int로 바꾸면 강제 반올림이 가능하다.
근데 강제로 반올림을 하는게 너무 문제 조건에 맞춰 어거지로 푼 것 같아서 다시 한번 고민해보자.
java테마 : Cyan, godat 이 쓰기 좋다. 컴퓨터 안좋으면 기본 쓰자
char c = ‘’; 이렇게 공백 넣기 불가능
String s = “”; String은 공백 가능
Float 는 숫자 뒤에F!!!!!
큰거를 작은거에 넣으면 값 손실이나니까 자동으로 형변환 안해준다!
작은걸 큰거 안에 넣으면 값 손실 안나니까 그냥 들어간다. Ex) double d = 3.13f 가능!
Sout(“” + 아무값); 하면 “아무값” 문자열로 나옴.
&&(and)가 ||(or)보다 순서가 빠르다!!!
!는 거의 가장 마지막!
char byte(int보다 작은애들)들은 범위가 작아 연산할 때 int로 바뀌어서 연산.
Sout(c++)은 내가 포함된 기능들이 먼저 수행되고 나서 증감연산자가 수행된다.
문제에서 주어진 값만 푸는게 아니라 모든 값에서 적용이 되는 해결방법을 생각하자!!!