gwooden_코린이
java (2일차) 본문
※출력문
print 3가지
System.out.print <- 줄바꿈 없이 문자열을 그대로 출력
출력시 ("text"); <- 대괄호와 세미콜론 필수
*나머지 print도 동일하게 단, 변수를 대입할 수 있어 대괄호 없이도 사용 가능
printf
println <- ln은 줄바꿈을 해줌
※변수
정수
예)
int a;
a = 10;
System.out.println(a); --> 출력값 ● 10
System.out.printf("%d", a); --> 출력값 ● 10
두 번째 같은 경우 정수를 나타내는 명령어가 필요 %d는 정수를 뜻한다.
▶실수
float
double <-- 실수형 변수로 많이 사용됨
예)
double b = 3.14;
System.out.println(b); --> 출력값 ● 3.14
System.out.println("실수형 변수 : " + b); --> 출력값 ● 10실수형 변수 : 3.14
System.out.println("실수형 변수 : " + b + "ㅁㄴㅇ"); --> 출력값 ● 10실수형 변수 : 3.14ㅁㄴㅇ
System.out.println(a + b); --> 출력값 ● 13.14
★println 문자열과 동시에 실수형 출력을 원할 시 +를 실수형 변수를 선언한 문자 앞에 추가
System.out.printf("%f", b); --> 출력값 ● 3.140000
★printf 사용 시 %f를 사용하여 실수형 변수 출력
▶정리
★변수
int a = 10; <--- 정수를 저장
double b = 3.14; <--- 실수를 저장
char c = 'c'; <--- 문자를 저장 (작은괄호를 사용)
String d ="helle"; <--- 문자열를 저장 (대괄호 사용)
boolean e = true; or false; <--- 참과 거짓을 저장
★주석
//로 이용
시작 /* 끝 /* 을 사용하면 주석을 길게 이용할 수 있음
예)
/*
아래 코드들은 다양한 변수를 선언
*/
★복습
/*
아래 코드들은 다양한 변수를 선언
*/
int a = 10; // 정수
double b = 3.14; //실수
char c = 'c'; //문자
String d ="helle"; //문자열
boolean e = true; //true, false
a = 20; // 코딩문은 위에서 아래로 읽혀져서 처음 정수 변수를 10이라고 정했어도 후에 20이라고 정하면
기존에 지정한 정수를 선언한 값은 지워진다.
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
출력값
20
3.14
c
helle
true
★추가
System.out.printf("정수 : %d\n", a);
System.out.printf("실수 : %f\n", b);
System.out.printf("문자 : %c\n", c);
System.out.printf("문자열 : %s\n", d);
System.out.printf("bool : %b\n", e);
출력값
정수 : 20
실수 : 3.140000
문자 : c
문자열 : helle
bool : true
◈역슬레시 기능
\n 사용 시 줄바꿈 기능을 추가 가능
이클립스는 컨트롤 + 역슬레시 사용 시 해당 코드 한 줄이 주석 처리가 된다.
여러줄을 잡고 하면 한번에 하나씩 주석 처리가 된다.
컨트롤 + 시프트 + 역슬레시는 뭉텅이로 전체 주석 처리를 해준다.
int a = 123;
int b = 54321;
System.out.printf("%5d\n", a); <--- 여기서 %d 사이에 원하는 숫자를 넣으면 그 숫자만큼 자릿수를 채워준다.
System.out.printf("%d\n", b);
예)
123
54321
해당 기능은 콘솔창에서 나열을 이쁘게 보고싶을 때 사용해서 크게 사용은 안한다.
double c = 2.2542;
double d = 157.512558;
float f = 123.56452545f; // f사용시 자동으로 압축해서 값을 출력
System.out.printf("%.2f\n", c); // .2두 번째 자리까지 출력
System.out.printf("%.3f\n", d); // .3을 하면 세 번째 짜리까지 출력
// 5 이상 숫자는 반올림 되서 출력됨
출력값
2.25
157.513
이스케이프 문자 <-- 참고정도
구글 검색 시 많이 나옴
※연산
+, - , *, /
% : 나머지 계산
10 % 3 : 10 나누기 3의 나머지를 계산
int num1 = 20;
int num2 = 6;
System.out.println("두수 합 : " + (num1 + num2));
결과값 --> 26
문자열을 포함해서 변수를 출력할 때는 구분을 지어줘야 된다.
System.out.println("두수 나눈 결과 : " + (num1 / num2));
결과값 --> 3
정수로 계사하면 값은 정수로 출력됨
int num1 = 20;
double num2 = 6; <-- 실수가 저장크기가 크다 보니 정수가 메인이 아닌 실수가 메인이되어 소수점이 표시됨
System.out.println("두수 합 : " + (num1 + num2));
System.out.println("두수 나눈 결과 : " + (num1 / num2));
결과값 -->
두수 합 : 26.0
두수 나눈 결과 : 3.3333333333333335
int a = 10;
int b = 3;
System.out.println("두수 나눈 나머지 : " + (a % b));
결과값 --> 두수 나눈 나머지 : 1
// 자료형 변환 --> 명시적 형변환
System.out.println("나눈 결과 : " + (a / b));
결과값 --> 나눈 결과 : 3
여기서 아래 처럼 바꿔주면
System.out.println("나눈 결과 : " + (a / (double)b));
결과값 --> 나눈 결과 : 3.3333333333333335
소수점이 표시된다. 형변환할 선언된 변수 앞에 변경하고싶은 변수를 넣어준다.
아래 처럼 num2가 실수형이지만 출력문 중 첫 번째 출력문은 소수점 없이 깔끔하게 표기하고 싶을때 변형하고 싶은 변수를 넣어주면 된다.
int num1 = 20;
double num2 = 6;
System.out.println("두수 합 : " + (num1 + (int)num2));
System.out.println("두수 나눈 결과 : " + (num1 / num2));
결과값 -->
두수 합 : 26 <-- 이 처럼 소수점이 사라진 것을 확인할 수 있다.
두수 나눈 결과 : 3.3333333333333335
※입력문
컨트롤 + 시프트 + O
import java.util.Scanner; <-- 자동 입력 단축키
Scanner sc = new Scanner(System.in); <-- 해당 문을 사용하기 위해서는 스캐너를 불러오는 명령어를 입력해야 된다 위 참조!
▶정수
import java.util.Scanner; <--- 스캐너 명령어 불러오기
public class Sample03 {
public static void main(String[] args) {
int a; // 정수를 저장할 변수는 a
Scanner sc = new Scanner(System.in); // 스캐너 문
System.out.println("숫자를 입력하세요");
a = sc.nextInt(); //숫자를 입력할 수 있는 명령어
//실행 시 숫자를 입력하면 a라는 변수에 입력한 숫자가 입력된다.
System.out.println("입력한 숫자는 : " + a);
// 입력한 숫자가 맞는지 나온 후 프로그램 종료
★tip
코딩문장을 자동완성기능으로 사용할 시 컨트롤 + 스페이바 이용 단, 특정 상황에서
▶실수
double b;
Scanner sc = new Scanner(System.in);
System.out.println("실수를 입력하세요");
b = sc.nextDouble();
System.out.println("입력한 실수는 : " + b);
결과값 -->
실수를 입력하세요
21.5415 //직접 입력한 수
입력한 실수는 : 21.5415
▶문자
문자 입력 : qwe
문자만 출력하기 때문에 오류가 날 수 있어 .charAt(0); 해당 명령어를 사용해준다. 여기서 숫자는 사용한 문자에 순번위치
결과값은 q가 된다.
char c; // 문자를 저장할 변수는 c
Scanner sc = new Scanner(System.in);
System.out.print("문자 입력 : ");
c = sc.next().charAt(0); //.charAt는 원하는 위치에 단 하나의 문자 출력을 도와주는 명령어
System.out.println("입력한 문자 :" + c);
결과값 -->
문자 입력 : qwe
입력한 문자 :q
▶문자열
String d;
Scanner sc = new Scanner(System.in);
System.out.print("이름을 입력하세요 : ");
d = sc.next(); //문자열이다 보니 next까지만 명령어를 입력하면 된다.
//sc.nextLine(); 으로도 사용이 가능
System.out.println("안녕하세요!" + d + "님");
출력값 -->
이름을 입력하세요 : 홍길동
안녕하세요!홍길동님
★복습
import java.util.Scanner; <-- 단축키를 이용해서 명령어 불러오기
Scanner sc = new Scanner(System.in); <-- 스캐너 명령어 필수 입력
sc.nextInt(); <-- 정수
sc.nextDouble(); <-- 실수
sc.nextLine(); <--문자열
sc.next().charAt(0); <-- 문자
☞퀴즈 아래 처럼 코딩하기 이름을 입력하세요 : 김정한 나이를 입력하세요 : 27 성별을 입력하세요 : m 전호번호를 입려하세요 : 010-5130-5274 ===회원정보=== 이름 : 김정한 나이 : 27 성별 : m 전화번호 : 010-5130-527 위 퀴즈에서는 변수는 총 4가지를 선언해줘야 된다. |
☞풀이
package study02;
import java.util.Scanner;
public class Sample04 {
public static void main(String[] args) {
String name; //문자열
int age; //정수
char s; //문자
String hp; //문자열
Scanner sc = new Scanner(System.in);
//아래는 입력 코딩
System.out.print("이름을 입력하세요 : ");
name = sc.next(); //문자열이니 next 사용
System.out.print("나이를 입력하세요 : ");
age = sc.nextInt(); //정수입력이라 nextInt 사용
System.out.print("성별을 입력하세요 : "); // M /F 불대문?
s = sc.next().charAt(0); //문자입력이니 next().charAt(0)을 사용
System.out.print("전호번호를 입려하세요 : ");
hp = sc.next(); //다른 방법도 있지만 현재과정에서는 단순하게 next를 이용
//아래는 결과값 도출 코딩
System.out.println("===회원정보===");
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
System.out.println("성별 : " + s);
System.out.println("전화번호 : " + hp);
★next 와 nextLine 차이점 (상황에 맞게 잘사용할 것!)
next로 설정시 엔터로 입력해 준 값을 저장해주고 넘어간다.
nextLine은 전에 next에서 값과 엔터값 까지 모두 저장하고 넘어가다 보니 nextLine 명령어는 그냥 넘어가 버리게 된다.
nextLine은 탭키, 엔터키, 스페이스바키 까지 모두 같이 인식을 한다.
★tip : 숫자 두개를 출력해야 되는 상황일때
int num1, num2;
System.out.print("숫자 두개를 입력하세요 : ");
num1 = sc.nextInt();
num2 = sc.nextInt();
☞퀴즈 아래 처럼 코딩하기 국어 점수 : 87 영어 점수 : 81 수학 점수 : 97 점수 총합 : 265 점수 평균 : 88.3 |
int kr; //국어점수 - 정수
int eng; //영어점수 - 정수
int math; //수학점수 - 정수
Scanner sc = new Scanner(System.in);
System.out.print("국어 점수 : ");
kr = sc.nextInt(); //정수라 nextInt 사용
System.out.print("영어 점수 : ");
eng = sc.nextInt();
System.out.print("수학 점수 : ");
math = sc.nextInt();
System.out.println("점수 총합 : "+ (kr + eng + math));
System.out.println("점수 평균 : "+ ((kr + eng + math)) / 3.0);
//소수점 표기시 변형 변수를 해도 되지만, 직접 입력한 값을 소수점으로 표기해도
//하지만 소수점이 너무 많아 탈락
★리펙토링 <-- 위 코딩을 더 효율성 있게 재코딩
int kr, eng, math;
int sum;
double avg;
Scanner sc = new Scanner(System.in);
System.out.print("국어 점수 : ");
kr = sc.nextInt(); //정수라 nextInt 사용
System.out.print("영어 점수 : ");
eng = sc.nextInt();
System.out.print("수학 점수 : ");
math = sc.nextInt();
// System.out.println("점수 총합 : "+ (kr + eng + math));
// System.out.println("점수 평균 : "+ ((kr + eng + math)) / 3.0);
//소수점 표기시 변형 변수를 해도 되지만, 직접 입력한 값을 소수점으로 표기해도 가능
sum = kr+eng+math;
avg = sum / 3.0;
System.out.println("점수 총합 : " + sum);
System.out.println("점수 평균 : " + avg);
System.out.printf("소수 첫째짜리 : %.1f ", avg); //소수점 첫 째자리까지 표기시 print f문을 사용하고 %.1f를 활용하면 된다.
▶연산
int a = 10;
System.out.println(a);
//a가1증가된 값을 출력
a = a + 1; //옆에 수식 처럼 a값에 1을 더해서 11을 만들수 있다.
System.out.print(a);
a += 1; //다른 방법으로는 이런식으로도 가능하다.
+= 오른쪽항의 값을 왼쪽에 대입해서 플러스
-= 오른쪽항의 값을 왼쪽에 대입해서 마이너스
*= 오른쪽항의 값을 왼쪽에 대입해서 곱하기
/= 오른쪽항의 값을 왼쪽에 대입해서 나누기
★정리
a += 1, a = a + 1, a++, ++a
a -= 1, a = a - 1, a--, --a
▶논리연산(비교 연산)
>
<=
<
<=
==
!=
a와 b가 10 이상?(and - 곱리곱 연산)
a >=10 && b>=10
&&은 and연산
예)
int a = 10, b = 20;
boolean c;
// a와 b가 10 이상?(and - 곱리곱 연산)
System.out.println(a>=10 && b>=10);
a가 10이상이거나 b가 2이상? (or - 논리합 연산)
a>=10 || b>=20
||는 or연산
!->논리 부정 not 연산
!a
^ -> 배타적 논리합 XOR <-- 해당 연산은 코딩에서 잘 사용하지 않는다.
(두개가 다를 경우 true)
a>=10 ^ b>=20
결과값은 true / false가 나온다.
예)
int a = 10, b = 20;
System.out.println(a>b);
결과값)
false
예)
int a = 10, b = 20;
boolean c;
c = b>=a;
System.out.println(c);
결과값)
True
▶비트연산 - 2진수 1, 0
10진수 0~9
27 -> 2진수로 변환 (나눌수 있을때 까지 나누는 값)
값 : 11011 (2진수)
자바 코딩 시 아래 처럼 하면 값은 '11011' 2진수로 표기
System.out.println(Integer.toBinaryString(27));
System.out.println(Integer.toBinaryString(31));
System.out.println(27 & 31); // 1을 true 인식, 0을 false로 인식
첫 번째가 11011 값
두 번째가 11111 값
27
10을 2진수로 하면 1010 ~a 10
0000 1010 ~a 10
1111 0101 -> 음수 10진수
1000 1010 ->1의 보수 (숫자 첫 자리는 바뀌지 않는다.)
+ 1
1000 1011 ->2의 보수
결과물 : -11
1의 보수 -> 1을 0으로 0을 1로
2의 보수 -> 1의 보수를 한 값 +1
0000 1010 -> 10
1111 0101 -> 1의 보수 처리된 결과물
+ 1
1111 0110 -> 2의 보수 처리된 결과물
▶쉬프트 연산
int a = 10;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(a<<2));
System.out.println(a<<2); //두칸씩 왼쪽으로 민다.
결과값 :
1010 <-- 기존
101000 <-- 두칸씩 밀린 결과물
40 <-- 최종
☞퀴즈 아래처럼 나오게 코드작성 두 자연수를 입력 : 472 <-(1) 입력한 자연수 첫 번째 458 <-(2) 입력한 자연수 두 번째 3776 <-(3) 첫 번째 수와 두번째 수 세번째 자리 수의 곱한 값 2360 <-(4) 첫 번째 수와 두번째 수 두번째 자리 수의 곱한 값 1888 <-(5) 첫 번째 수와 두번째 수 첫번째 자리 수의 곱한 값 216176 <-(6) 두 자연수의 곱한 값 |
int a, b;
int c, d , e;
Scanner sc = new Scanner(System.in);
System.out.print("두 자연수를 입력 : ");
a = sc.nextInt();
b = sc.nextInt();
c = a * (b % 10); //b는 1의 자리
d = a * (b / 10 % 10); //b는 10의 자리
e = a * (b / 100); //b는 백의자리
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println(a*b);
▶삼황 연산 -> 조건식 결과에 따라 출력됨
조건식 ? 참일때 코드 : 거짓일 때 코드
★예)
//입력한 점수가 80점 이상이면 합격 아니면 불합격
int a;
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
a = sc.nextInt();
System.out.println(a>=80 ? "합격" : "불합격");
a>=80이 조건식
? <-- 참 또는 거짓인지
"합격" true 인지 "불합격" false인지 문자열 입력
이항/단항
a+b
!a
▶조건문
if문 기본 형식 --- 다채롭게 쓸 때 삼황연산 보다는 if문을 주로 사용하면 코딩이 더욱 깔끔하고 다채롭다.
if는 따로 ; 세미클론을 안 적는다.
if(조건식) {
조건식이 참일 때 실행할 코드
} else { //else는 생략도 가능하다. else 코드는 지워도 무방
조건식이 거짓일 때 실행할 코드
}
★if문을 통해 여러 조건을 내세우려고 할 때
예제) 입력한 점수가 80점 이상이면 A, 60점이상이면 C... 등등
if (조건식1) {
조건식1 참일 때 코드
} else if(조건식2) {
조건식2 참일 때 코드
} else if(조건식3) {
조건식3 참일 때 코드
} else {
모두 거짓일 때 코드
}
★예)
//입력한 점수가 80점이상이면 합격, 아니면 불합격
int a;
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
a = sc.nextInt();
if(a>=80) {
System.out.println("합격");
} else {
System.out.println("불합격");
}
★예) <-- 여러 조건을 내세울 때
//입력한 점수가 80점이상이면 합격, 아니면 불합격
int a;
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
a = sc.nextInt();
if(a>=80) {
System.out.println("A");
} else if(a>=60) {
System.out.println("B");
} else {
System.out.println("C");
}
만약 순서를 바꾼다면
if(a < 80 && a>=60) {
System.out.println("B");
} else if(>=80) {
System.out.println("A");
} else {
System.out.println("C");
}
★퀴즈 - 짝수, 홀수 코드 작성 if문 |
int a;
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : ");
a = sc.nextInt();
if(a % 2 == 0) {
System.out.println("짝수");
} else {
System.out.println("홀수");
}
int a;
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : ");
a = sc.nextInt();
if(a % 2 == 0 && a % 7 == 0) {
System.out.println("짝수");
} else {
System.out.println("홀수");
}