System.out.println("홍길동" + 9+8); // 홍길동98
System.out.println(9 + 8 + "홍길동" + 9 + 8); // 17홍길동98
System.out.println(9 + 8 + "홍길동" + 9 - 8); // 에러발생
System.out.println(9 + 8 + "홍길동" + (9 + 8)); // 17홍길동17
System.out.println(9 + 8 + "홍길동" + (9 + 8) + 9 + 8); // 17홍길동1798
문자열이 등장한 이후부터는 무조건 문자열에 대한 연산으로 인식.
괄호로 묶을 시 다시 숫자로 연산.
// 자동 형 변환 : 작은 자료형에서 큰 자료형으로 변환할 때
int num = 10;
double dou1 = num;
System.out.println(dou1); // 10
// 강제 형 변환 : 큰 자료형에서 작은 자료형으로 변환할 때
dou1 += 0.5;
System.out.println(dou1); // 10.5
num = (int)dou1;
System.out.println(num); // 10
(int이하 크기의 자료형들에 대한)
// 자료형 연산 : int형 이하인 것은 연산 시 모두 int형으로 자동 형 변환
byte b1 = 5;
byte b2 = 7;
// byte result = b1 + b2; //에러발생 : 결과가 int로 자동으로 바뀌기 떄문에
int result = b1 + b2;
System.out.println(result);
char c1 = 'a';
char c2 = 'a';
int re = c1+c2;
System.out.println(re); //194
float와 double형태 유의
정수 -> 실수 -> 정수로 바꿀때 간혹 .99999999로 표현되는 이유
int score = 46;
if(score >= 80)
System.out.println("합격입니다.");
else
System.out.println("불합격."); //불합격
if(score >= 90)
System.out.println("A학점1");
else if(score >= 80)
System.out.println("B학점1");
else
System.out.println("끝"); // 끝
if(score >= 90)
System.out.println("A학점");
else if(score >= 90);
System.out.println("B학점"); // B학점
//printf("이스케이프문자사용", 숫자)
int score = 90;
System.out.printf("나의 점수는 %d점 입니다.", score);
//나의 점수는 90점 입니다.
System.out.printf("90을 8진수로 변환 : %o", score);
//90을 8진수로 변환 : 132
System.out.printf("90을 16진수로 변환 : %x", score);
//90을 8진수로 변환 : 5a
System.out.printf("90을 16진수로 변환 : %X", score);
90을 8진수로 변환 : 5A
String str = "홍길동";
double dou1 = Math.PI;
System.out.printf("점수 : %d, 이름 : %s, 원주율 : %f", score, str, dou1);
//90을 16진수로 변환 : 5A점수 : 90, 이름 : 홍길동, 원주율 : 3.141593
//3.141590 => 총 자리수 8자리(소수점도 1자리로 포함)
//%4.2f 전체자릿수 4자리(소수점1자리로침) 소수점 2자리까지 출력해라 라는뜻
System.out.printf("소수점 둘째 자리까지 출력 : %4.2f", dou1);
//소수점 둘째 자리까지 출력 : 3.14(근데 맨 뒷자리 옆자리는 반올림)
System.out.printf("소수점 둘째 자리까지 출력 : %.3f", dou1);
//소수점 둘째 자리까지 출력 : 3.142
//앞의 전체자리수는 많이 안쓰고 실제로는 소수점 몇번째 자리까지 출력을 많이 씀
//format도 printf와 동일
System.out.format("소수점 둘째 자리까지 출력 : %.3f", dou1);
//소수점 둘째 자리까지 출력 : 3.142
이스케이프 문자 ==> %d %x같은애들
%4.2f 전체자릿수 4자리(소수점1자리로침) 소수점 2자리까지 출력해라 라는뜻
실제로는 전체자리수를 지정하는 경우가 많지 않다고 함.
System.in <=== 주소(내가 키보드로 입력한게 in이라는 곳에 저장이 됨)
Scanner sc = new Scanner(System.in);
System.out.println("점수 입력 : ");
//입력받을때 console창에 출력되는 내용
int score = sc.nextInt();
// 사용자로부터 점수를 입력받아
// 80점 이상 : 합격
// 70~79점이면 대기순번
// 69이하면 불합격 출력하기
if(score >= 80) {
System.out.println("합격");
}else if(score <= 79 && score >= 70) {
System.out.println("대기순번");
}else {
System.out.println("불합격");
// 정수를 입력받아서 2의 배수이면서 3의 배수인지 확인
Scanner sc = new Scanner(System.in);
System.out.println("숫자 입력 : ");
int a = sc.nextInt();
if(a % 3 == 0) {
if(a % 2 == 0) {
System.out.println("2의 배수이면서 3의 배수입니다");
}else{
System.out.println("3의 배수이지만 2의 배수는 아닙니다.");
}
}else if(a % 2 == 0) {
if(a % 3 == 0) {
System.out.println("2의 배수이면서 3의 배수입니다");
}else{
System.out.println("2의 배수이지만 3의 배수는 아닙니다.");
}
}
else {System.out.println("아닙니다.");}
Scanner sc = new Scanner(System.in);
System.out.println("태어난 달을 입력하세요");
int mon = sc.nextInt();
switch (mon) {
case 1: case 2: case 12: {
System.out.println("겨울에 태어났군여");
break;
}
case 3: case 4: case 5: {
System.out.println("봄에 태어났군여");
break; //브레이크 안걸면 아래거까지 계속감
}
case 6: case 7: case 8: {
System.out.println("여름에 태어났군여");
break;
}
case 9: case 10: case 11: {
System.out.println("가을에 태어났군여");
break;
}
default: System.out.println("사람이 아닙니다.");
}
try {
System.out.println("숫자를 두 번 입력하세요");
double a = sc.nextDouble();
double b = sc.nextDouble();
System.out.println("연산자를 입력하세요");
String c = sc.next();
switch(c){
case "+":System.out.println(a+b);break;
case "-":System.out.println(a-b);break;
case "*":System.out.println(a*b);break;
case "/":System.out.println(a/b);break;
case "%":System.out.println(a%b);break;
default:System.out.println("계산불가능");
}
}
catch(Exception e) {System.out.println("숫자를 똑바로 입력하세요");}
예제1
System.out.println("숫자를 두 번 입력하세요");
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println("연산자를 입력하세요");
String c = sc.next();
switch(c){
case "+":System.out.println(a+b);break;
case "-":System.out.println(a-b);break;
case "*":System.out.println(a*b);break;
case "/":System.out.format("%d / %d = %.3f",a,b,(double)a/b);break;
case "%":System.out.println(a%b);break;
default:System.out.println("계산불가능");
}
아까 배운 이스케이프 문자를 활용한 예제
int c = 0;
for(int i = 1; i <= 5; i++, c++) {
System.out.println(i+c + ". 조금 있으면 즐거운 점심시간!!!");
}
System.out.println("================");
int d = 0;
for(int i = 1; i <= 5; i++) {
System.out.println(i+c + ". 조금 있으면 즐거운 점심시간!!!");
d += 1;
}
배열 배우고 다시
//for문으로 1~100까지 4의 배수의 합만 구하시오
int s1 = 0;
for(int i = 1; i <= (int)100/4; i++) {
s1 += i;
System.out.println(s1*4);
}
s1 *= 4;
System.out.println(s1 + " = s1의 값");
int s2 = 0;
for(int i = 1; i <= 100; i++) {
if(i % 4 == 0) {
s2 += i;
}
}
System.out.println(s2 + " = s2의 값");
int s3 = 0;
for(int i = 0; i <= 100; i+=4) {
s3 += i;
}
System.out.println(s3 + " = s3의 값");
int s4 = 0;
for(int i = 100; i > 0; i-=4) {
s4 += i;
}
System.out.println(s4 + " = s4의 값");
//구구단 만드는 이중for문
for(int i = 1; i <= 9; i++) {
for(int t = 2; t <= 9; t++) {
System.out.print(t + " * " + i + " = " + i*t + "\t");
}
System.out.println();
}
// i와 t는 for문 안에서만 선언한 로컬 변수이므로 포문이 종료되면 사라짐
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 1; i <= n; i++) {
for(int m = 1; m <= i; m++) {
System.out.print("*");
}
System.out.println();
}
n칸만큼의 별 삼각형을 뽑는 포문
StringBuffer av = new StringBuffer();
for(int i = 1; i <= 1; i++) {
for(int t = 1; t <= i; t++) {
for(int c = 1; c <= t; c++) {
av.append("*");
}
av.append("\n");
}
}
String s = av.toString();
System.out.println(s);
출력이 안되는데 뭔가 실행중으로 뜸
왜인지 공부해야함
//while
int i = 5;
while(--i != 0) {
System.out.print(i);
}//4321
System.out.println("\n" + i); //0
System.out.println();
int j = 5;
while(j-- != 0) {
System.out.print(j);
}//43210
System.out.println("\n" + j); //-1
"--i" ==> 감소부터 하고 비교해라
"i--" ==> 뺀 걸 비교하고 감소시켜라
//비교용
int sum = 0;
int t = 0;
while(t++ != 100) {
sum += t;
}
System.out.println(sum); //5050
int sum1 = 0;
int t1 = 0;
while(++t1 != 100) {
sum1 += t1;
}
System.out.println(sum1); //4950
t가 100이 됐을때의 t++ , ++t의 차이
t++ --> 99까지 더한 뒤 비교해서 true였으므로 비교 후 ++한 값인 100을 sum에 더하고 종료
++t --> 이미 99까지 더한 뒤 100이 됐을때 ++을 먼저 하고 비교해서 false가 나오므로 100을 안더함
while문 자체가 괄호 안의 조건식이 참일때 돌아가므로
해당 형태일때 무한반복하게됨
int z = 1;
while(true) {
System.out.println(z);
if(z == 10) {
break;
}
z++;
}
// 1 ~ 10까지 출력
(~Scanner선언~)
try{
while(true) {
System.out.println("숫자를 두 번 입력하세요(0 입력시 종료합니다.)");
int a = sc.nextInt();
int b = sc.nextInt();
if(a == 0 || b == 0) {System.out.println(a + " <-- 해당 숫자가 입력되어 종료합니다."); break;}
System.out.println("연산자를 입력하세요");
String c = sc.next();
switch(c){
case "+":System.out.println(a+b);break;
case "-":System.out.println(a-b);break;
case "*":System.out.println(a*b);break;
case "/":System.out.format("%d / %d = %.3f\n",a,b,(double)a/b);break;
case "%":System.out.println(a%b);break;
default:System.out.println("연산자 입력이 잘못되었습니다.");
}
}
}catch (InputMismatchException e) {
System.out.println("다시 실행하세요");
}
sc.close();
' == ' 대신 equals()를 쓰는 경우 기본자료형으로는 사용 불가
next()를 이용하여 문자열 형태로 받아야함.
// continue 이하의 구문을 실행하지 않고 반복문으로 올라가서 실행
// 1~100까지 합계중 6의 배수를 제외한 합계 구하기
int ss = 0;
for(int i = 1; i <= 100; i++) {
if(i % 6 == 0) {
continue;
}
ss += i;
}
System.out.println(ss);
int i = 1;
while(true) {
if(i > 100) {
break;
}
if(i % 6 == 0) {
i++;
continue;
}else {
i++;
ss += i;
}
}
System.out.println(ss);
continue를 쓰면 어떻게 되는지 확인
int a, b, c;
int d = 3, e = 10, f = 100;
for(int i = 1, j = 10; i <= 10; i++, j--) {
System.out.println("i = " + i + ", j = " + j);
}
//while(true){ }이랑 비슷한 포문
for(;;) {
}
//배열의 선언 형태
int [] arrInt1 = {1,2,3,4,5}; //자동으로 크기는 5가 됨
int arrInt2 [] = {1,2,3,4,5}; // [] 를 변수명 뒤에 놓아도 ㅇㅋ
int arrInt3 [] = new int[5]; //배열 만들떄 갯수 지정
int arrInt4 [] = new int[]{1,2,3,4,5}; //이런 형태로는 잘 안씀. 1번케이스가 더 짧고 편해서
char [] ch1 = {'a', 'b', 'c'};
arrInt4[0] = 11;
arrInt4[1] = 12;
arrInt4[2] = 13;
arrInt4[3] = 14;
arrInt4[4] = 15; //미리 선언된 배열에 덮어씌울수 있음
for(int i = 0; i <= 4; i++) {
arrInt4[i] = i+10;
System.out.println(arrInt4[i]);
}
int len4 = arrInt4.length; //배열의 방 갯수
for(int i = 0; i < len4 + 1; i++) {
arrInt4[i] = i+10;
System.out.println(arrInt4[i]); //방 갯수를 넘겨서 에러 발생
}
System.out.println(Arrays.toString(arrInt1)); // [1, 2, 3, 4, 5] 출력
System.out.println(ch1); // char형태 배열이라 바로 abc 출력
System.out.println(arrInt4); // [I@515f550a int형태배열이라 주소값 출력
==> 배열을 바로 출력해버릴때 쓸수있음, import필요
int score [] = {34,48,5,4,21,100,44};
//최대값과 최소값 출력
for(int i = 0; i < score.length-1; i++) {
if(score[i] > score[i+1]) {
int b;
b = score[i+1];
score[i+1] = score[i];
score[i] = b;
}
}
System.out.println("최대값은" + score[score.length-1]); //최대값은100
// for(int i = 0; i < score.length; i++) {
// System.out.println(score[i]);
// }
for(int i = 0; i < score.length-1; i++) {
if(score[i] < score[i+1]) {
int b;
b = score[i+1];
score[i+1] = score[i];
score[i] = b;
}
}
System.out.println("최소값은" + score[score.length-1]); //최소값은4
// for(int i = 0; i < score.length; i++) {
// System.out.println(score[i]);
// }
int max = score[0]; //34
int min = score[0]; //34
for(int i = 1; i < score.length; i++) {
if(max < score[i]) {
max = score[i];
}else if(min > score[i]{
min = score[i];
}
}
System.out.println(max)
최대/최소 하나만 구할땐 이게 훨 좋은거같음