선택
switch - case
균일한 속도를 제공
break로 switch문 밖으로 나간다.
default가 없는 경우 마지막 case에서 break생략 가능하다.
case는 문자열도 가능하다.
int select = sc.nextInt();
switch(select) {
case 1: System.out.println("case 1 : "+select);break;
case 2: System.out.println("case 2 : "+select);break;
case 3: System.out.println("case 3 : "+select);break;
default : System.out.println("default : 1,2,3이 아닌 수");
}
System.out.println("다음문장");
String select = sc.next();
switch(select) {
case "1": System.out.println("case 1 : "+select);break;
case "2": System.out.println("case 2 : "+select);break;
case "3": System.out.println("case 3 : "+select);break;
default : System.out.println("default : 1,2,3이 아닌 수");
}
System.out.println("다음문장");
반복문
for
for(초기식; 조건식; 증감식;){ 실행문 }
지정된 위치에 식을 구성하여 가독성이 높다.
정해진 수만큼 반복
식은 일부 또는 전부를 생략 가능(세미콜론은 적어주어야 한다.)
조건식 생략하면 무한 반복이므로 빠져나올 수 있는 실행문을 작성해야 한다.
초기식은 적어주는 게 빠를 수 있다.)
순서 : 초기식→조건식→증감식→실행→조건식→증감식→실행 순으로 반복, 조건식이 false가 됐을 때 반복을 빠져나온다.
EX
package loop_for;
import java.util.Scanner;
public class Ex {
public static void main(String[] args) {
//두 수를 입력받아 작은수~큰수의 합계를 구하기
int data1=0;
int small=0;
int big= 0;
boolean a = true;
Scanner sc = new Scanner(System.in);
System.out.println("두 수를 입력");
big= sc.nextInt();
small = sc.nextInt();
if(big<small) {
data1 = small;
small = big;
big = data1;
}
int sum=0;
for(int i = small; i <= big; i++) {
sum += i;
}
System.out.println(sum+"입니다");
System.out.println("수를 입력");
data1= sc.nextInt();
for(int i = 2; i<data1; i++) {
if(data1%i==0) {
a = false;
break;
}
}
if(a)System.out.println("소수다");
else System.out.println("소수가 아니다");
sc.close();
}
}
-1~1000까지의 자연 수중 4로 나누어도 6으로 나누어도 나머지가 1 인수의 합
-첫날의 저금액은 1원 그 이후부터 전날의 두배씩 저금, 30일 후 저금액(long)
-체스판 첫칸에는 밀알이 1개 그 이후부터 두배씩 밀알을 넣었을 때 64칸 모두의 밀알의 개수(bigIntegert사용)
package loop_for;
import java.math.BigInteger;
public class Ex {
public static void main(String[] args) {
//1~1000까지의 자연수 중에 4로 나누어도 6으로 나누어도 나머니가 1인 수의 합
int sum=0;
long sum2=0;
for(int i = 1;i<1000;i++) {
if(i%4==1&&i%6==1) {
sum += i;
}
}System.out.println("합은"+sum+"이다");
//저금
int a = 1;
sum2 = 0;
for(int i = 1;i<=30;i++) {
sum2 = sum2+a;
a *= 2;
}
System.out.println("aa합은"+sum2+"이다");
//밀알문제
BigInteger bigInteger = BigInteger.ZERO;
BigInteger bigInteger2 = BigInteger.ONE;
for(int i = 1;i<=64;i++) {
bigInteger = bigInteger.add(bigInteger2);
int j = 2;
bigInteger2 = bigInteger2.multiply(BigInteger.valueOf(j));
}
System.out.println("aa합은"+bigInteger+"이다");
//BigInteger 사용방법
BigInteger milTotal = new BigInteger("0");
BigInteger milSeed = new BigInteger("1");
BigInteger two = new BigInteger("2");
for(int i = 1;i<=64;i++) {
milTotal = milTotal.add(milSeed);
milSeed = milSeed.multiply(two);
//System.out.println("칸 "+i+"에는 "+milTotal+"개 있다");
}
System.out.println("aa합은"+milTotal+"이다");
}
}
for 이중 반복문
그룹 대 그룹으로 비교를 할 때
데이터들의 정렬
상위 for문이 끝날 때까지 루프가 계속된다.
예제
수를 입력받아 2에서 그 수까지 내에 있는 소수를 찾는 프로그램
3x + 2y = 10
해를 구하기 단 x, y는 정수이며 0 <=x, y <=0을 만족한다
package loop_for;
import java.util.Scanner;
public class Ex{
public static void main(String[] args) {
//수를 입력받아 2에서 그 수까지 내에있는 소수를 찾는 프로그램
int data1,i,j;
boolean a= true;
Scanner sc= new Scanner(System.in);
System.out.println("수입력");
data1 = sc.nextInt();
for(i=2;i<=data1;i++) {
a=true;
//System.out.println("i"+i);
for(j=2;j<i;j++) {
//System.out.println("j"+j);
if(i%j == 0) {
a=false;
break;
}
//a = true;
}
if(a){
System.out.println(j+"소수이다");
}
}
//3x + 2y = 10 의 해를 구하기 단 x,y는 정수이며 0<=x,y<=0을 만족한다.
//x=(10-2y)/3
System.out.println("a");
for(int x=0;x<=10;x++) {
for(int y=0;y<=10;y++) {
if(3*x+2*y==10) {
System.out.println("x:"+x+" y:"+y);
}
}
}
}
}
while
while(){ } : () 안의 조건이 true일 때 {} 안의 문장을 반복한다.
정해진 횟수가 아닌 경우 while을 주로 사용한다.
원하는 조건이 만족될 때까지 반복하고 싶을 때 사용한다.
예제
쌀 102통(1통은 1kg)에 저장되어있는 창고에 암수 1쌍의 쥐가 있다. 쥐 한 마리가 하루에 20g씩 쌀을 먹고 10일(10,20,30)마다 쥐의 수가 2배씩 증가한다.
며칠 만에 창고의 쌀이 모두 쥐의 먹이가 되고, 그때의 쥐의 마리수는?
package loop_while;
public classEx{
public static void main(String[] args) {
int rice,mouse,day;
rice = 102000;
mouse = 2;
day = 0;
while(true) {
day++;
rice = rice-20*mouse;
if(day%10==0)
mouse *=2;
if(rice<=0)break;
}System.out.println("쌀이 소진 된 날"+day+"쥐의 마리수"+mouse);
}
}
do while
다음의 종속 문장을 먼저 실행한 후에 조건식을 평가
do{실행문 }while(조건문); |
흐름 변경
continue
반복 도중 처리를 중단하고 반복문의 시작 위치로 이동
if가 있기 때문에 잘 쓰이진 않는 편
쓰인다면 try catch절에서 catch의 실행문으로 쓰인다.
break
반복문이 실행되고 있는 시점에서 가장 근접한 반복문에서 바로 빠져나온다.
break | bool |
int i=0; boolean bool = true; while(bool) { i++; if(i==3) { break; }System.out.println("i:"+i); } System.out.println("다음문장 실행"); |
int i=0; boolean bool = true; while(bool) { i++; if(i==3) { bool = false; } System.out.println("i:"+i); } System.out.println("다음문장 실행"); |
i:1 i:2 다음문장 실행 |
i:1 i:2 i:3 다음문장 실행 |
'코딩 공부 > Java' 카테고리의 다른 글
JAVA Random (0) | 2022.08.17 |
---|---|
자바 콘솔 입 출력 (0) | 2022.08.16 |
조건문 (0) | 2022.08.14 |
연산자 (0) | 2022.08.13 |
기본 개념 (0) | 2022.08.12 |