삼항연산자
총 3개의 피연산자를 가짐.
? 앞의 피연산자는 조건 연산자라고 한다. 이 값이 true면 : 앞의 피 연산자가 선택되고, false면 : 뒤의 피연산자가 선택됨
예시1)
int score = 85;
char grade = (score>90) ?'A':'B';
System.out.println(grade);
예시2)
int = x;
String result = (X%2==0)?"짝수":"홀수";
System.out.println("x = "+ x +", " + result");
}
}
반복문
종류 : while , do-while , for
While문
> while은 조건식이 true 인경우에 계속반복하고, false가 되면 반복을 멈추고 while을 종료한다
예시 1) 1을 한번씩 더해서 3 만들기
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int c = 0 ;
while (c<3) {
c++;
System.out.println(c);
}
}
예시 2) i부터 하나씩 증가하는 수를 n번 더하기
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int sum = 0;
int i = 1;
int endNum = 3;
while (i <= endNum) {
sum = sum + i;
System.out.println("i=" + i + " sum=" + sum);
i++;
}
}
}
예시 3) 2의배수와 3의배수의 공통값만 출력하기
package test;
import java.util.Scanner;
public class studying {
int sum=0;
int i=1;
while(i<=100) {
if(i%2==0 && i%3==0) {
System.out.println(i);
}
i++;
예시4) 정수1~100까지의 누적합을 구하고 0이 입력되면 종료
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int sum=0, n=100;
Scanner s = new Scanner(System.in);
while(n!=0){
System.out.println("입력해라");
n=s.nextInt();
sum+=n;
}
System.out.println(sum);
s.close();
}
}
예시5) . while 문과 Math.random() 메소드를 이용해서 두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추 는 코드를 작성해보세요. 눈의 합이 5가 되는 경우는 (1, 4), (4, 1), (2, 3), (3, 2)입니다.
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
while(true) {
int num1 = (int)(Math.random()*6) + 1;
int num2 = (int)(Math.random()*6) + 1;
System.out.println("(" + num1 + ", " + num2 + ")");
if( (num1+num2) == 5) {
break;
}
}
}
}
do-while문
> while과 비슷하지만 순서가 다름
조건이 맞지 않아도 무조건 실행문 1번은 실행된다
예시1)
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int i = 10;
do {
System.out.println("현재 숫자는:" + i);
i++;
}
while (i < 3);
}
}
예시2) 1부터 20까지의 합을 do-while문으로 작성
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int n=1; int sum=0;
do {
sum+=n; // sum=sum+n
n++;
}
while(n<=20);
System.out.println(sum);
}
}
예시3) 문자열 반복 종료
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
String str;
Scanner sc=new Scanner(System.in);
do {
System.out.println("문자열 입력");
str=sc.next();
if(str.equals("exit")) {
System.out.println("프로그램 종료");
}
else {
System.out.println(str);
}
}
while(!str.equals("exit"));
}
}
Switch문
예시) 구구단
//Switch 활용하여 구구단설정
switch(dan) {
case 3:
for(int i=1;i<=9;i++) {
System.out.println(3*i);
}
break;
}
}
예시) 요일 입력
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
System.out.println("무슨 요일이죠?");
String day=s.next();
//내가 입력한 요일을 조건으로 인식
switch(day) {
case "월요일":
System.out.println("월");
break;
case "화요일":
System.out.println("화");
break;
default: //월요일,화요일이 아닐 경우
System.out.println("월,화 아님");
break;
}
}
}
예시) 하나의 문자 입력
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("글자 입력 : ");
char ch = s.next().charAt(0);
switch(ch) {
case 'm':
System.out.println("movie");
break;
case 's':
System.out.println("sing");
break;
case 'b':
System.out.println("book");
break;
default:
System.out.println("etc");
break;
}
}
}
Break문
반복문인 for, while, do-while을 실행 중지하거나 조건문인 switch를 종료할때 사용한다
break은 대게 if와 같이 사용되어 조건식에 따라 for와 while을 종료한다
while(조건식) {
코드1;
break;//즉시 while문 종료로 이동한다.
코드2;
}
//while문 종료
예시1) 1부터 시작해서 숫자를 누적합하여 10보다 처음으로 큰 수는?
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (true) {
sum += i;
if (sum > 10) {
System.out.println("합이 10보다 크면 종료: i=" + i + " sum=" + sum);
break;
}
i++;
}
}
}
예시2) 이름이용 반복 탈출
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
while(true) { //무한루프 , 종료는 break!
System.out.println("이름 입력");
String name=s.next();
//문자열 비교는 ==이 아닌 equals.() 사용
if(name.equals("해리")) {
break; //무한루프 종료
Continue 문
블록 내부에서 continue가 실행되면 for의 증감식 또는 while, do-while의 조건식으로 바로 이동한다.
while(조건식) {
코드1;
continue;//즉시 조건식으로 이동한다.
코드2;
}
//continue 를 만나면 코드2 가 실행되지 않고 다시 조건식으로 이동한다. 조건식이 true이면 while 문을 실행한다.
예시1) 1부터 5까지 숫자를 출력하는데, 숫자가 3일 때는 출력을 건너뛰어야 한다
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int i = 1;
while (i <= 5) {
if (i == 3) {
i++;
continue;
}
System.out.println(i);
i++;
}
}
}
//i==3 인 경우 i 를 하나 증가하고 continue 를 실행한다. 따라서 이 경우에는 i 를 출력하지 않고
//바로 while (i <= 5) 조건식으로 이동한다.
예시2) 정수 5개를 입력하여 누적합을 구하기, 단 0을 입력하면 바로 누적합 계산
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("정수 5개 입력");
int sum=0;
for(int i=1;i<=5;i++) { //횟수
int n=sc.nextInt(); //5번 입력
if(n<0) {
continue; //제외(올라가서 반복문 실행)
}
else { //n>=0
sum+=n;
}
}
System.out.println(sum);
}
}
예시3) 0~30까지 중에서 5의 배수를 제외하고 출력해라(무한반복문과 break, continue를 다 사용)
package test;
import java.util.Scanner;
public class studying {
public static void main(String[] args) {
int n=-1;
while(true) {
n++;
if(n%5==0 && n!=0) {
continue;
}
if(n>30) {
break;
}
System.out.println(n);
}
}
}