예제1
int number = in.nextInt();
if(number % 3 == 0)
System.out.println("3의 배수입니다.");
else
System.out.println("3의 배수가 아닙니다.");
scanner.close();
예제2
int score = scanner.nextInt();
if(score = scanner.nextInt();
grade = 'A'
else if(score >= 80)
grade = 'B';
else
System.out.println("학점은"+grade+"입니다");
scanner.close();
switch(인자) {
case 1:
case 2:
case 3:
"인자가 1 또는 2 또는 3인 경우 실행하는 구문"
break;
case 4:
"인자가 4인경우 실행하는 구문"
break;
default:
"모든 case문을 만족하지 못하는 경우 실행하는 구문"
}
예제1
char grade;
int score = scanner.nextInt();
switch(score / 10){
case 10:
case 9:
grade = 'A';
break;
case 8:
grade = 'B';
break;
default:
grade = 'F';
}
System.out.println("학점은"+grade+"입니다");
scanner.close();
예제2 - 올바른 case문 값 할당 예시
// 에러 예시
switch(a){
case a: // 오류 => 변수 사용 안됨
case a > 3: // 오류 => 수식 안됨
case a == 1: // 오류 => 수식 안됨
case 1.1: // 오류 => 실수 리터럴 안됨
}
// 올바른 사용 예시
int b;
switch(b%20){
case1 : // 정수 리터럴 사용 가능
...;
break;
case2 :
...;
break;
}
char c;
switch(c){
case '+' // 문자 리터럴 사용 가능
...;
break;
case '-'
...;
break;
}
String s = "예";
switch(s){
case "예" // 문자열 리터럴 사용 가능
...;
break;
case "아니요"
...;
break;
}
for(int i=0; i<10; i++) // 변수 i를 for문에서 선언. i는 for문을 벗어나면 사용 불가능
System.out.println(i):
int i, sum; // 변수 선언
for(i=0, sum =0, i <= 100; i++) // 변수i, sum의 초깃값을 0으로 설정
sum += i;
// 1.반복 조건이 true
for(초기작업; true; 반복후 작업){ // 반복 조건이 true이면 무한 반복
...
}
// 2. 반복 조건이 비어있음
for(초기작업; ; 반복후 작업){ // 반복조건이 비어있으면 true로 간주 => 무한 반복
...
}
// 3. 초기 작업과 반복후 작업은 쉼표 ',' 로 분리하여 여러 문장 나열 가능
for(i=0; i<10; i++, System.out.println(i) ){
...
}
// 4. for문 내에 변수선언
for(int i=0; i<10; i++){ // 변수 i는 for문 내에서만 사용 가능
...
}
예제
int count = 0;
int sum = 0;
int n = scanner.nextInt();
while(n != -1){ // -1이 입력되면 while문 벗어남
sum += n;
count++;
n = scanner.nextInt();
}
scanner.close();
무조건 중괄호 { } 블록을 한번 실행한후, 조건식을 검사해 반복 유무를 결정
형태
do{
.. 작업문 ..
} while(조건식);
예제
char c = 'a';
do {
System.out.println(c);
c = (char)(c+1);
} while(c <= 'z');
}
for(초기문; 조건식; 반복후작업){
while(조건식){
...
break; // break 가 실행되면
}
... // while문 탈출하고 이 구문으로 옴
}
...
for(int i=0; i<5; i++){
int n = scanner.nextInt();
if(n <= 0)
continue; // 양수가 아닌 경우 다음 반복으로 진행
else
sum += n;
}
예제3
Math.random() : 0 <= 난수 < 1 사이의 실수인 난수를 생성
=> int(Math.random()*20) : 0~19 사이의 정수형 난수를 생성
왜 0 <= 난수 < 20 사이의 난수가 아닌 0~19 사이의 정수형 난수인가?
=> double 타입을 int타입으로 바꾸면 실수 부분이 짤리기 때문
즉, 19.99999... 까지의 숫자가 만들어지는데 실수 부분이 짤리므로 19가 된다.
예제6
switch문 안에서 case는 여러개를 하나로 묶어서 실행문을 쓸수있다.
예제 11
for문 밖에서 반복 변수 i를 선언시 반복문이 끝나도 값이 유지된다.
예제 12
실수형 타입에 대한 연산은 정확하지 않다!
예제 16
scanner 가 system.in 이라는 입력 스트림을 이용해 입력을 편하게 받는 것이라고 했었다.
그러나 이 예제에서는 scanner 를 사용하지 않고 직접 system.in 을 사용해서 입력을 받는다
system.in 에는 사용자가 입력한 키보드에 적힌값으로 그대로 들어오는 것이 아니라, 내가 누른 키에 대응하는 바이트 코드 값으로 들어온다.
=> 이렇게 system.in 으로 직접 입력값을 받으면 바이트 코드 값으로 들어온 입력에 대해서 직접 처리하는 코드를 적어줘야함! (그래서 귀찮기때문에 scanner 객체를 많이 이용한다)