참고) 자바문서_Math
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Math.html
ex) -10 -> abs(-10) -> 10
ex) pow(2,3); -> 2의 3제곱
예시)

ㄴ Math.random() : 0~1 사이 난수

ㄴ Math.random() * 10 : 0~10 사이 난수

ㄴ int형으로 강제형변환(묵시적형변환)
ㄴ 0~42 사이 정수

ㄴ ceil로 반올림
ㄴ 1~43 사이 정수
ex) sqrt(9) -> 3
예시) 1) ~ 7)

ㄴ import static java.lang.Math.*; 하면 함수명만 가지고 java.lang.Math에 정의된 메서드 바로 사용 가능
ㄴ import안하면 Math.abs.(-10) 이렇게 작성해야 함
예시) 로또 번호 뽑기
package exam04;
import java.util.Arrays;
// 문제 : 1 ~ 43, 6개의 숫자 - 중복x
public class Ex02 {
public static void main(String[] args) {
//int num = (int)Math.ceil(Math.random() * 43); // 1 ~ 43
//int num = (int)(Math.random() * 43) + 1; // 1 ~ 43
//System.out.println(num);
int cnt = 0;
int[] lotto = new int[6];
while(cnt < 6){
int num = getNumber();
if (chkDuplicated(lotto, num)) {
continue;
}
lotto[cnt] = num;
cnt++;
}
System.out.println(Arrays.toString(lotto));
//System.out.println(Math.random() * 3); // 0, 1, 2 // 곱하는 수보다 작은 수가 정수부분에 나온다
}
public static int getNumber(){
return(int)(Math.random() * 43) +1;
}
public static boolean chkDuplicated(int[] lotto, int num) {
for (int n : lotto) {
if (n == num)
return true;
}
return false;
}
}
package exam04;
import java.util.HashSet;
// 문제 : 1 ~ 43, 6개의 숫자 - 중복x
public class Ex03 {
public static void main(String[] args) {
// Set : 중복x
HashSet<Integer> lotto = new HashSet<>();
while(lotto.size() < 6){
lotto.add(getNumber());
}
System.out.println(lotto);
}
public static int getNumber() {
return (int)(Math.random() * 43) + 1; // 1 ~ 43
}
}
참고) 자바문서
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html

예시) equals(.., ..)
package exam04;
import java.util.Arrays;
//문제 : nums1, num2가 값이 같은지 체크하는 법
public class Ex05 {
public static void main(String[] args) {
int [] nums1 = { 10, 20, 30, 40 };
int [] nums2 = { 10, 20, 30, 40 };
// 2번 풀이
boolean isSame = Arrays.equals(nums1, nums2);
System.out.println(isSame);
// 1번 풀이
// boolean isSame = true;
// first : for ( int i = 0; i < nums1.length; i++ ) {
// if (nums1[i] != nums2[i]){
// isSame = false;
// break;
// }
// }
// System.out.println(isSame);
}
}
ㄴ equals내에 1번 풀이가 내재되어 있다
참고) Arrays.equals(..), Arrays.deepEquals(...)

예시) deepEquals(.., ..)
package exam04;
import java.util.Arrays;
//문제 : nums1, num2가 값이 같은지 체크하는 법
public class Ex06 {
public static void main(String[] args) {
int [][] nums1 = {{10, 20, 30}, {40, 50, 60}};
int [][] nums2 = {{10, 20, 30}, {40, 50, 60}};
boolean isSame = Arrays.deepEquals(nums1, nums2);
System.out.println(isSame);
}
}





예시) requiredNonNullElse(.., ..)

ㄴ 에러남 : NPE(NullPointerException)

ㄴ requiredNonNullElse() : 특정변수(str)이 null이면 기본값("")을 부여
ㄴ 에러안남
참고)자바문서_java.util.Random
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Random.html
예시) nextInt(), nextBoolean()

ㄴ for문 : nextInt(), nextBoolean()의 출력값이 6개씩 나오도록 돌림
ㄴ nextInt() : 중복되지 않은 Int자료형 난수 출력
ㄴ nextBoolean() : true/false를 번갈아 가면서 무작위로 난수 출력
Scanner sc = new Scanner(System.in); : 터미널에서 입력터미널에서 입력
InputStream System.in
-> 자료형이 InputStream
-> scanner쪽에 System.in을 매개변수로 넣으면 터미널 쪽에서 입력할 수 있도록 해줌
파일
File
FileInputStream..
네트워크
참고) 자바문서_java.util.Scanner
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Scanner.html


ㄴ 매개변수 다양...
ㄴ 특정 자료형에 맞게 읽어 올 수 있단 말
참고) Next...()
- 읽어 올 때 주로 쓰는 메서드
예시) 터미널에서 입력하기

ㄴ String name = sc.nextLine(); 커서 깜빡깜빡... -> 입력 할 때까지 대기상태

ㄴ 커서 깜빡깜빡 하는 곳에 이이름이라고 입력
예시) 파일에서 입력하기

ㄴ data라는 파일 생성

ㄴ while (sc.hasNextInt()) {} : hasNext가 다음이동할 커서가 있는지 없는지 쳌하고 boolean타입으로 반환값이 나오니까 더이상 읽어 올게 없을 때 false로 뜨면서 while문의 {} 시행멈춤
ㄴ int num = sc.nextInt(); : sc.nextInt()가 data파일에 있는 Int값을 하나씩 하나씩 읽어오는 걸 int num이라는 변수에 담음

ㄴ 연산도 가능~
구문 문자를 가지고 문자를 분리할때
토큰 : 구문 문자
요즘은 사용빈도가 떨어진다고 함
StringTokenizer 클래스 생성자 함수의 매개변수

StringTokenizer(String str) : 매개변수가 1개인 생성자함수를 이용하면 nextToken(String delim) 메서드를 통해 토큰을 설정해 줘야 함참고)자바문서_java.util.StringTokenizer
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/StringTokenizer.html
StringTokenizer(String str) : 매개변수가 1개인 생성자함수를 이용하면 nextToken(String delim) 메서드를 통해 토큰을 설정해 줘야 함예시) 토큰1개 설정

ㄴ StringTokenizer st = new StringTokenizer(fruits, "#"); : 토큰이 # 이다
ㄴ while(st.hasMoreTokens()) {} : st.hasMoreTokens()가 다음 토큰(#)이 있으면 true를 반환값을 내보냄 -> {} 실현
ㄴ String fruit = st.nextToken(); : 쪼개진 문자열을 가져올 때 사용
예시2) 토큰 여러개 설정
