입력 메소드 (Scanner)
next() : 공백 혹은 \n를 구분점으로 삼고 각 값을 분리하여 저장한다.
nextLine() : 구분점이 없기 때문에 입력받은 값 통채로를 저장한다.
package day03;
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String name = "";
int age = 0;
System.out.print("나이 : ");
age = Integer.parseInt(sc.next());
System.out.print("이름 : ");
sc.nextLine();
name = sc.nextLine();
System.out.println(name + "님 환영합니다.");
System.out.println(age + "살");
// Scanner sc = new Scanner(System.in);
// String name = "";
// System.out.print("이름 : ");
// name = sc.next();
// System.out.println( name + sc.next() + "님 환영합니다.");
//공백만큼 sc.next()를 써야한다.
}
}
package day03;
import java.util.Scanner;
public class ScannerTest2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String n1Msg = "첫번째 정수 : ";
String n2Msg = "두번째 정수 : ";
int num1 =0, num2 =0, result = 0;
System.out.print(n1Msg);
num1 = sc.nextInt();
System.out.print(n2Msg);
num2 = sc.nextInt();
result = num1 + num2;
System.out.printf("%d+%d=%d", num1, num2, result);
}
}
JOptionPane
JOptionPane.showInputDialog() 창으로 입력을 받을 수 있다.
JOptionPane.showMessageDialog(null, result); 창으로 메세지를 띄울 수 있다.
package day03;
import javax.swing.JOptionPane;
public class Dialog {
public static void main(String[] args) {
int num1 = Integer.parseInt(
JOptionPane.showInputDialog("첫번째 정수를 입력하세요" ));
int num2 = Integer.parseInt(
JOptionPane.showInputDialog("두번째 정수를 입력하세요" ));
//문장전체가 입력한 숫자가 된다.
int result = num1 + num2;
JOptionPane.showMessageDialog(null, result);
}
}
package day03;
import javax.swing.JOptionPane;
public class DialogTask {
public static void main(String[] args) {
//이름, 나이, 성별 입력받고 출력하기
//JOptionPane 사용하기
String name = "";
int age = 0;
String gender ="";
String resultMsg = "";
String nameMsg = "이름을 입력하세요.";
String ageMsg = "나이를 입력하세요.";
String genderMsg= "성별을 입력하세요.";
name = JOptionPane.showInputDialog(nameMsg);
age = Integer.parseInt(JOptionPane.showInputDialog(ageMsg));
gender = JOptionPane.showInputDialog(genderMsg);
// resultMsg = String.format("이름 :%s\n나이 : %d살\n성별: %s", name, age, gender);
resultMsg = ( "이름 :" + name +" \n나이 :" + age +"\n성별" + gender);
JOptionPane.showMessageDialog(null, resultMsg);
}
}
package day03;
import javax.swing.JOptionPane;
public class DialogTask2 {
public static void main(String[] args) {
//정수 2개를 입력받고
//사칙연산 결과값 모두 출력
//덧셈, 뺄셈, 곱셈, 나눗셈(소수점 2째자리까지)
//JOptionPane사용
int num1 =0 ;
int num2 = 0;
String n1Msg = "첫번째 정수를 입력하세요.";
String n2Msg = "두번째 정수를 입력하세요.";
int add = 0;
int sub =0;
int mul = 0;
double div =0.0;
String resultMsg= "";
num1 = Integer.parseInt(JOptionPane.showInputDialog(n1Msg));
num2 =Integer.parseInt(JOptionPane.showInputDialog(n2Msg));
add = num1 + num2;
sub = num1 - num2;
mul = num1*num2;
div = Double.parseDouble(String.format("%.2f", (num1+0.0)/num2));
resultMsg = "첫번째 정수: " +num1+", 두번째정수: "
+num2 + "\n[덧셈]: "+add+"\n[뺄셈]: "+sub+"\n[곱셈]: "+mul +"\n [나눗셈]: "+div;
JOptionPane.showMessageDialog(null, resultMsg);
}
}
연산자
: 기능이 있는 특수문자
연산자의 우선순위
1. 최우선 연산자
2. 단항 연산자
3. 산술 연산자
4. 쉬프트 연산자
5. 관계 연산자
6. 논리 연산자
7. 삼항 연산자
8. 대입 연산자
결합성(면접에서도 나오니까 알아두기)
같은 우선순위를 가진 연산자가 여러개 있을 때
알맞는 방향으로 결합되어 연산되는 성질
비트 연산
논리 연산자
& AND (논리곱) : 두 비트 모두 1이면 1
| OR (논리합) : 둘 중 하나라도 1이면 1
^ NOR (배타논리합) : 두 비트가 서로 다르면 1
단항 연산자 (원리를 알고 싶으면 맨 아래 필기를 참조)
~ NOT(논리부정) : 0을1로, 1을 0으로 변경
~a = -a -1
package day03;
public class BitOper {
public static void main(String[] args) {
System.out.println(10&11);
System.out.println(10|11);
System.out.println(10^11);
System.out.println(~10);
}
}
부호비트
비트는 우에서 좌로 읽고 최상단 비트(좌측)에는
부호비트가 들어간다.
0은 양수, 1은 음수이다.
2의 보수
문제) 1 1110 0110
1. 우에서 좌로 읽으면서 1을 찾는다.
2. 그 다음 비트부터 NOT해준다.
예) 0 0001 1010
3. 10진수로 고친다.
예) 26
4. -를 붙여준다.
정답) -26
쉬프트 연산자(비트이동)
a<<b a를 b만큼 비트이동
a>>b b를 a만큼 비트이동
비트 이동시 빈 칸은 0으로 채워지고(음수는 1)
비트가 넘어가면 자동으로 잘린다.
조건식
: 결과가 참 또는 거짓, 둘 중 하나가 나오는 식
참 : true
거짓 : false
전구가 켜지면 참, 꺼지면 거짓
1 : 참
0 : 거짓
C언어에서는 0은 거짓, 0이외의 모든 수는 참
JAVA에서는 false 거짓, true 참
논리형
10 > 4 == true
10 != 10 == false
자료형 | type | byte | 값 |
논리형 | boolean | 1 | true, false |
boolean isTrue = 10 > 1;
관계 연산자 (비교연산자)
== : 같다.
!= : 같지 않다.
>,< : 초과, 미만
>=,<= : 이상, 이하
논리 연산자(두 조건식을 이어주는 역할)
&&(AND) : A&&B - 두 조건식 모두 참일 때 참
||(OR) : A||B - 둘 중 하나라도 참이면 참
단항 연산자
! (NOT) : !A - 참은 거짓으로 거짓이면 참으로 변경
package day03;
public class OperTest {
public static void main(String[] args) {
boolean isTrue = 10 == 11;
System.out.println(10 == 11);
System.out.println(10 == 11 && 10>4);
System.out.println(10 == 11 || 10>4);
// System.out.println( !10 == 11);
// 단항이 관계연산자보다 먼저 되기 때문에 오류
System.out.println(!(10 ==11));
System.out.println(!isTrue);
}
}
삼항 연산자 (? :)
조건식 ? 참 : 거짓 (저장공간에 넣기 위해서는 자료형이 같아야함)
참과 거짓 영역에는 값만 들어갈 수 있다.
예) 10>1 ? 10 : 1 ;
package day03;
import java.util.Scanner;
public class OperTest2 {
public static void main(String[] args) {
//정수 2개 입력
//Scanner
int num1 =0, num2 =0;
int result = 0;
String msg = "";
Scanner sc = new Scanner(System.in);
String n1Msg = "첫번째 정수: ";
String n2Msg = "두번째 정수: ";
System.out.println("-9999는 비교대상이 아닙니다.");
System.out.print(n1Msg);
num1 = sc.nextInt();
System.out.print(n2Msg);
num2 = sc.nextInt();
result = num1> num2? num1 : num1 ==num2 ? -9999 : num2;
msg = result == -9999? "두 수는 같습니다" : "큰 값 :" + result;
System.out.println(msg);
}
}
//삼항 연산자를 사용해서 정답이면 정답 출력, 오답이면 오답 출력
//Q. 다음 중 프로그래밍 언어가 아닌 것은?
//1. JAVA
//2. 파이썬
//3. C언어
//4. 망둥어
package day03;
import java.util.Scanner;
public class OperTask {
public static void main(String[] args) {
int choice = 0;
int answer = 4;
String resultMsg = "";
String msg = "Q. 다음 중 프로그래밍 언어가 아닌 것은?\n" + "1. JAVA\n" + "2. 파이썬\n" +
"3. C언어\n" + "4. 망둥어\n" + "정답은 ?";
Scanner sc = new Scanner(System.in);
System.out.println(msg);
choice = sc.nextInt();
resultMsg = choice == answer ? "정답!" :
choice > 0 && choice < 5? "오답ㅠㅠ" : "다시 시도해주세요.";
System.out.println(resultMsg);
}
}
필기
* 예) 손 서연을 저장하는 방법
1. next를 사용
- next는 공백 or \n을 끝으로 알기때문에 '손'만 저장이 된다.
따라서, '손 서연'을 저장하기 위해서는
System.out.println( name + sc.next() + "님 환영합니다.");
(위의 두번째 코드 참조)
공백만큼 sc.next()를 추가해야한다.
2. nexLine을 사용
- nextLine은 공백과 엔터도 저장하기 때문에 한번에 저장 가능!
* next는 공백 또는 엔터를 먹지x
nextLine은 먹기 때문에 두 문장의 출력을 받을 경우( next 후에 nextLine을 쓸 때),
nextLine을 한번 더 넣어줘야한다.
* 클래스를 형변환하기 위해서는 자료형클래스 안의 메소드를 써야함.
int : Integer.parseInt( )
double : Double.parseDouble()
* JOptionPane. ...으로 값을 받으면 그 문장 자체가 값이 되기 때문에 저장소에 넣어줘야함!
출력오류가 있다면 저장소에 잘 저장했는지 확인하기.
* // 를 쓰고 지울 경우, //가 되어있는 줄끼리 묶어야 지울 수 있다.
공백인 칸을 같이 드래그할 경우, //가 한번 더 써진다.
'JAVA' 카테고리의 다른 글
[WEB]DAY6_2차원 배열 (0) | 2020.02.17 |
---|---|
[WEB]DAY5_배열 (0) | 2020.02.17 |
[WEB]DAY4_제어문 (조건문 : if문, switch문), (반복문 : for문, while문, do while문), 연산자 (0) | 2020.02.17 |
[WEB]DAY2_변수, 자료형, 주소, 서식문자, 형변환, 입력메소드(1) (0) | 2020.02.11 |
[WEB]DAY1_JAVA의 기본, 설치, 기본 구성 요소, 출력 메소드 (0) | 2020.02.10 |