랜덤함수
랜덤함수를 만드는 두가지 방법
1. java.util.Random
2. java.lang.Math.random
1. java.util.Random
import java.util.Random;
Random rnd=new Random();
int n=rnd.nextInt();//int범위에서 난수 리턴
System.out.println(n);
long lnum = rnd.nextLong();
System.out.println(lnum);
//범위중의 난수 가져오기
//nextInt(경우의수) + 최소값
int i = rnd.nextInt(10);//0~9-> 1~10
System.out.println(i);
//50~100
i=rnd.nextInt(51)+50; //0~50 -> 50~100
System.out.println(i);
//0.0이상 ~ 1.0미만의 임의의 실수
//0.0(inclusive)~1.0(exclusive)
double dnum = rnd.nextDouble();
System.out.println(dnum);
boolean bool=rnd.nextBoolean();
System.out.println(bool);
2. java.lang.Math.random()
이는 내장함수로 , 따로 불러올 필요(import)가 없다는 장점이 있다.
double형만 가능하고, 0.0이상 ~ 1.0미만의 임의의 실수를 리턴한다.
double n = Math.random();
System.out.println(n);
//정수변환
//1~10사이의 임의의 정수로 쓰려면?
int i=(int)(Math.random()*10)+1;
System.out.println(i);
boolean bool = (Math.random()*2)==0?true:false;
System.out.println(bool);
활용
동전게임
사용자 : 앞/뒤인지 베팅
컴퓨터 : 난수 생성 후 사용자 값과 비교
//사용자 입력값
Scanner sc=new Scanner(System.in);
System.out.print("동전 앞/뒤를 입력하세요.(1.앞 2.뒤) : ");
int user = sc.nextInt();
//1. java.util.Random
//컴퓨터 난수생성 및 값 비교
Random rnd = new Random();
int i=rnd.nextInt(2)+1;
String result = user==i?"우승":"탈락";
System.out.println(result);
//2. java.lang.Math.random()
//컴퓨터 난수생성 및 값 비교
int i=(int)(Math.random()*2)+1;
String result = user==i?"우승":"탈락";
System.out.println(result);
메소드와 매개변수, 매개인자 (함수)
메소드의 종류
- 매개변수가 있는/없는 메소드
- 리턴값이 있는/없는 메소드
메소드는 선언후 반복호출해서 사용한다.
-재사용가능(장점)
매개변수는 메소드선언부 괄호안에 위치. 호출시 전달된 값(매개인자)이 대입된다.
매개인자(argument 값)가 매개변수(parameter 공간)에 대입된다.
public void printPerson(String name,int age) {
System.out.printf("안녕하세요, 저는 %s입니다. %d살이구요. 잘부탁드립니다.%n",name,age);
}
public void test1() {
String name="홍길동";
int age=33;
printPerson(name,age);
}
public void test2() {
String name="신사임당";
int age=28;
printPerson(name,age);
}
test 1,2에 두번 사용한 모습.
리턴값도 처리할 수 있다.
public void test3() {
int n1 = getUserNum(1);
int n2 = getUserNum(2);
System.out.printf("%d와 %d의 합은 %d입니다.%n", n1, n2, n1 + n2);
}
public int getUserNum(int nth) {
Scanner sc = new Scanner(System.in);
System.out.printf("정수%d입력 :", nth);
int n = sc.nextInt();
return n; // n에 담긴 값이 넘어간다.
}
If문(조건문)
- if문
- if else문
- if elseif문
- 중첩if문
if문
- 조건식이 true이면 if문 내의 블럭을 실행
- 조건식이 false이면 if문 블럭을 무시하고 진행
int a = 10;
// true/false로 처리될 조건식
if(a == 10) {
// 참일때 실행할 코드를 작성
System.out.println("참입니다.");
}
위 식은 참입니다. 라는 결과가 출력된다.
if else문
- if 문에 else문을 추가한 것으로 다른 조건일 경우를 추가할 수 있음.
int a = 11;
if(a % 2 == 0) {
// 조건식이 참일때 실행하는 코드블럭
System.out.println("짝수");
}
else {
// 조건식이 거짓일때 실행하는 코드 블럭
System.out.println("홀수");
}
if elseif문
- 처리할 조건이 여러가지 일 경우에 사용이 가능.
맨 마지막 else절은 넣어도 되고 안넣어도 된다.
- 순서대로 처리되므로, 조건식, 순서 모두 중요하다.
public void test3() {
int n = 85;
char grade; // char타입 기본값은 공백문자
if(n >= 90) {
grade = 'A';
}
else if(n >= 80) {
grade = 'B';
}
else if(n >= 70) {
grade = 'C';
}
else if(n >= 60) {
grade = 'D';
}
else {
grade = 'F';
}
System.out.printf("점수 : %d, 학점 : %c%n", n, grade);
}
중첩 if문
- 말그대로 if문 안의 if문.
public void test6() {
int n = 75;
String grade; // char타입 기본값은 공백문자
if(n >= 90) {
grade = "A";
// 95~ A+
if(n >= 95) {
grade += "+";
}
}
else if(n >= 80) {
grade = "B";
// 85~ B+
if(n >= 85) {
grade += "+";
}
}
else if(n >= 70) {
grade = "C";
// 75~ C+
if(n >= 75) {
grade += "+";
}
}
else if(n >= 60) {
grade = "D";
// 65~ D+
if(n >= 65) {
grade += "+";
}
}
else {
grade = "F";
}
System.out.printf("점수 : %d, 학점 : %s%n", n, grade);
}
오늘 알게된 TIP
Alt+Shift+Y => 이클립스 자동 줄바꿈
변수의 유효범위
- 블럭안에 선언된 변수는 블럭밖에서 사용불가하다.
- 블럭밖에 선언된 변수는 블럭안에서 얼마든지 사용이 가능하다.