728x90
반응형
if & else if 조건문
public class aa {
public static void main(String[] args) {
//복합대입연산자 예시
int i = 1;
int b = 12;
int b2 = 12;
int B = 7;
int B2 = 5;
int B3 = 6;
int L = 3;
final int j = 3;
System.out.println(i+=2); // i=i+2 =3
System.out.println(i-=2); // i=i-2 = -1
System.out.println(i*=2); // i=i*2 = 2
System.out.println(i/=2); // i=i/2 = 0
System.out.println(i%=2); // i=i%2 = 1
System.out.printf("test: %d%n",b>>=1);
//이진수로 비트 값을 오른쪽을 1칸 밀어버린다는 뜻
//이진수 표현법: 0,1,2,4,8,16으로 증가되며 0101 = 5, 1001 = 9, 1011 = 11 등으로 표현됨
//따라서 b(1100)을 한칸 오른쪽으로 넘겨서 (0110) = 6 추출
System.out.println(b2<<=2);
//위와 동일한 개념, 현재 b2(1100)을 왼쪽으로 2칸 밀어버렸다는 뜻
//즉(1100)을 (110000) = 16+32 = 48
System.out.println(B&=2); // B=B&2
//의미는 2진수로 변환한 두개의 숫자 중 겹치는 것만 대입해서 2진수 추출
//(0111)&&(0010) = (0010) = 2
System.out.println(B2|=2); // B2=B2|2
//위와 같은 개념으로 (0101)||(0010) = (0111) = 7;
System.out.println(B3^=2); // B3=B3^2
//배타적 논리합 연산 XOR연산 = 2진수 중 겹치는 값이 있으면 0, 없으면 1로 표시
//즉 (0110) ^ (0010) = 0100 = 4
System.out.println(L*=10+j); // L=L*(10+j)
//3*13 = 39
//조건문 = if & switch
//반복문 = for & while
//조건문 & 반복문 = 제어문(flow control statement)
//예시
char ch='s';
if(ch=='s' || ch=='\t' || ch=='\n') {
System.out.println("참입니다");
//'\t'은 tap의 의미
}
int i=50;
if(i<=40)
System.out.println("출력값 하나일때는 블럭{}생략 가능");
else
System.out.println("조건문이 참 거짓 둘 중 하나의 조건식이면 else 사용");
//여러개의 if문은 else if 사용, 마지막엔 else로 마무리
int score = 58;
if(score>=90) {
System.out.println("A");
}
else if(score>80) {
System.out.println("B");
}
else if(score>70) {
System.out.println("C");
}
else
System.out.println("FAIL");
//학점 입력기 예시 - scanner 문 사용
Scanner scanner = new Scanner(System.in);
System.out.println("점수를 입력하세요");
int s=0; //학점 입력을 위한 0 공백 int함수 생성
char g=' '; //학점 입력을 위한 char 공백 함수 생성
s=scanner.nextInt(); //char or String이 아닌 int이므로 nextLine이 아닌 nextInt로 대체
if(s>=90) {
g='A';
}
else if(s>80) {
g='B';
}
else if(s>70) {
g='C';
}
else
g='F';
System.out.printf("당신의 점수는 %d이므로 학점은 %c입니다%n", s,g);
//나온 점수를 위의 printf에 대입
System.out.println("당신의 점수는 "+s+"이므로 학점은 "+g+"입니다");
//혹은 위의 println으로 대체 가능 or char g='F'로 미리 선언해서 else를 제외시킬 수 있음
//if 중첩문=if안의 중첩문 = opt변수를 추가함으로써 같은 등급의 +-를 입력
char grade = 'F';
char opt = ' ';
int score =0;
Scanner scanner = new Scanner(System.in);
System.out.println("점수를 입력해주세요");
score=scanner.nextInt();
if(score>90) {
grade = 'A';
if (score>=95) {
opt='+';
}
else if (score>=91) {
opt='-';
}
}
if(score>80) {
grade = 'A';
if (score>=85) {
opt='+';
}
else if (score>=81) {
opt='-';
}
}
System.out.println("입력된 점수는 "+score+"이고 등급은 "+grade+opt+"입니다.");
System.out.printf("입력된 점수는 %d이고 등급은 %c%c입니다.", score, grade,opt);
}
}
switch 조건문
//경우의 수가 많을때는 switch 함수 사용
//else if와의 차이점:
//장점: true false출력과 달리 여러 케이스들을 한 블럭에 다 저장할 수 있어서 깔끔함
//단점: switch의 조건식 결과값은 정수나 문자열(1.7ver이상)만 가능
//단점2: case문의 값은 정수, 상수(변수 안됨), 문자열만 가능 + 중복 안됨
//꼭 중간에 break문을 써줘서 값이 일치하면 식이 멈추도록 해야함
//예시 switch
System.out.println("현재 월을 입력하세요");
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();
switch(month) {
case 1: case 2: case 3:
System.out.println("겨울입니다");
break;
case 4: case 5: case 6:
System.out.println("봄입니다");
break;
case 7: case 8: case 9:
System.out.println("여름입니다");
break;
default:
System.out.println("겨울입니다");
}
Math.random 반복문
public class Daily_Upload_TSTORY {
public static void main(String[] args) {
//임의의 정수 만들기 = 난수 만들기
//Math.random() = 0.0 ~ 1.0사이의 임의의 double 값을 반환
//=0.0<=1.0 = 즉 0.999999999는 가능하지만 1.0은 안됨
double d = Math.random();
double d1 = Math.random()*3;
System.out.println(d);
//만약 0~3의 double random값을 얻고싶다면 Math.random 함수에 3을 곱해서 추출
//여기서 random의 정수값을 얻고싶다면 추출할때 형변환(int)로 정수 추출
//마지막으로 1~3까지의 정수형 random값을 추출할려면 +1만 하면 추출 가능
System.out.println((int)d1+1);
//심화 예졔 - 1부터 10사이의 난수 5개 출력
for(int i = 1; i<=5; i++) {
int result =(int)(Math.random()*10+1);
System.out.println("test: "+result);
}
//심화 예제 - -5부터 5까지의 난수 5개 출력
for(int ii = 1; ii<=10; ii++) {
int result2 =(int)(Math.random()*11-5);
//0<Math.round()<1의 값에서 각각 11을 곱함
//0<Math.round()<11에서 5를 차감
//-5<Math.round()<6 = 따라서 -4부터 5까지 숫자를 랜덤 추출
System.out.println(result2);
}
//심화 예제 마지막 = -4에서 3(포함)까지 랜덤숫자 5개 추출
for(int iii=1;iii<=5;iii++) {
int result3 = (int)(Math.random()*8-4);
System.out.println("final test: "+result3);
}
}
}
for 반복문
public class Daily_Upload_TSTORY {
public static void main(String[] args) {
//반복문 for & while
//for은 반복횟수를 알때 적합하고 while은 반복횟수를 모를 때 적합
for(int i=1; i<=10; i+=2) {
//i = 1,3,5,7,9로 2씩 증가해서 총 5번 추출
System.out.println("test");
}
System.out.println(" ");
for(int ii=1;ii<=10;ii*=2) {
//i가 2씩 곱해지므로 총 4번 추출; 1,2,4,8,16
System.out.println("test2");
//먼저 어떤 숫자가 출력되는지 확인하고싶으면 아래에 ii를 넣어서 선출력
System.out.println(ii);
}
//for문에서 변수를 2개 넣을때
for(int a=1, b=7; a<=10; a++, b--) {
//다만 두 변수다 같은 타입이여야하고 콤마를 사용하여 구분해주어야함
//마지막 두개의 조건식구분도 콤마로 구분해주어야 함
//a의 조건식이 맞을때까지 b는 무조건 따라가는 식
System.out.println("a: "+a+" b: "+b);
}
//for문 안의 i같은 변수는 for문 블럭안에서만 사용 가능
//i를 다른 블럭으로 scope확장 시키고 싶으면 미리 for문 위의 블럭에서 선언을 한 후
//for문에서 생략하여 같은 반복문 추출 가능 = 생략 시 항상 true로 간주되어 선언됨
//예시 :
int L=1; //duplicated variable을 막기위해 L로 대신선언
for(;L<=10;L*=2) {
System.out.println("L: "+L);
}
System.out.println(L); // 반복문 끝의 마지막값인 16으로 최종 추출 완료
}
}
중첩 for 반복문
public class Daily_Upload_TSTORY {
public static void main(String[] args) {
//중첩 for문을 이용하여 구구단 만들기
int i = 2;
for(;i<=9;i++) {
for(int j=1;j<=9;j++) { // 마지막 for문이 모두 마친후에 그 전단계 for문이 실행됨
System.out.println(i+"x"+j +" = " +(i*j));
}
}
//심화 예제 = 별찍기 (10*5)
for(int s=1;s<=5;s++) {
for(int ss=1;ss<=10;ss++) {
System.out.print("*");
}
System.out.println(); //위의 중첩for문 다 작업 끝나고 줄바꿈 시켜줌
}
//심화예제 = 별 순차적으로 쌓기 till 5개
System.out.println();
for(int s=1;s<=5;s++) {
for(int ss=s;ss>=1 ;ss--) { //별을 거꾸로 찍을 때 가능
//미리 s값을 5개 넣음으로서 s값이 증가될수록 ss값이 커지는 식
System.out.print("*");
}
System.out.println();
}
System.out.println();
//예제 다른풀이편
for(int s=1;s<=5;s++) {
for(int ss=1;ss<=s;ss++) { //s의 값에 따라서 ss가 변해야 하는 의미이므로
// ss<=s값을 넣어서 s의 값에 ss가 의존하도록 함
System.out.print("*");
}
System.out.println();
}
}
}
728x90
반응형
'Java > 자바의정석 기초편' 카테고리의 다른 글
자바 학습 & 복습 6일차 - array 배열 (1) | 2022.01.14 |
---|---|
자바 학습 & 복습 5일차 (0) | 2022.01.13 |
자바 학습 & 복습 3일차 (0) | 2022.01.11 |
자바 학습 & 복습 2일차 (0) | 2022.01.10 |
Java 학습 & 복습 1일차 (0) | 2022.01.10 |