오늘 수업은 Scanner 클래스와 자바 제어문을 배웠다
<Scanner 클래스>
콘솔에서 사용자의 입력을 받아줄 수 있는 클래스
java.utill 패키지에서 제공
1 사용방법
a 스캐너 클래스 객체를 선언 하고 활용해야 함.
b. 객체 선언 방법
Scanner[ 객체이름] = new Scanner(System.in);
//객체 이름을 sc 라고 한다면
Scanner sc = new Scanner(System.in);
// 객체 이름을 scanner 이라고 한다면
Scanner scanner = new Scanner(System.in);
c. 객체 이름은 클래스 이름(Scanner)과 똑같지만 않다면 아무 이름이나 선언 가능하며, 선언 후 객체 이름으로 Scanner 클래스에
서 제공하는 여러 메서드(Method)를 활용할수있음
스케너 클래스를 사용하려면
import 를 쓴 후 해당 클래스 경로를 호출하도록 한다.
package ch03_scanner;
// java.utill 패키지에 소속된 Scanner 클래스를 가져옴
import java.util.Scanner;
public class Ex01_Scanner {
public static void main(String[] args) {
// scanner 라는 이름에 Scanner 클래스 객체 선언
Scanner scanner = new Scanner(System.in);
//ln 이라는 명령어는 그 다음줄에 출력을 하는것이기 때문에 생략
System.out.print("숫자를 입력하세요: ");
int num1 = scanner.nextInt();
System.out.println(num1);
}
}
주의할점은 Scanner을 생성할때 System.in이 들어간다는 점이다
System.in은 사용자로 부터 입력을 받기 위한 입력 스트림이다
위의 코드를 콘솔에서 출력을 해보면
콘솔에서 값을 입력 하여 도출할수있다
2 주요 메서드
a. nextInt(): 정수값(int)을 입력받을 수 있음.
b. next(): 문자열(String)값을 입력받을 수 있음 띄어쓰기. 전까지 값만 저장 가능.
c. nextLine(): 엔터 입력 전까지의 문자열 값을 입력 받을 수 있음.
d. nextDouble(),nextBoolean() 등 자바의 기본 타입 변수를 받아주는 메서드 각각 있음.
3 활용 예
Scanner scanner = new Scanner(System.in);
// 정수를 입력받아 num1 이라는 변수에 저장
// 우변: scanner 클래스 객체가 가지고 있는 nextInt() 메서드를 호출하고
// 좌변: 호출 결과를 num1에 대입한다.
int num1 = scanner.nextInt();
package ch03_scanner;
import java.util.Scanner;
public class Ex02_calculator {
public static void main(String[] args) {
/**
* 정수 2개를 각각 스캐너로 num1, num2에 입력 받은 수의 합을 출력하세요.
*/
Scanner scanner = new Scanner(System.in);
System.out.print("첫번째 수: ");
int num1 = scanner.nextInt();
System.out.print("두번째 수: ");
int num2 = scanner.nextInt();
int sum = num1 + num2;
System.out.println("합계: "+ sum);
System.out.println(num1 + "과 " + num2 + "의 합계는 " + sum + "입니다.");
System.out.println(num1 + "+ " + num2 + "=");
System.out.print(num1+num2);
System.out.print("이름을 입력하세요: ");
String name = scanner.next();
System.out.println(name);
Scanner을 사용하여 간단한 계산식을 만들어보았다
위에서 말했드시 nextInt()는 정수값을 입력받을수있기고
주소와같이 띄어쓰기가 필요한경우는
//띄어쓰기가 필요한 경우 nextLine를 사용한다
scanner.nextLine(); // 중간에 scanner.nextLine를 사용하면 해결됨
// next 다음 nextLine를 사용할경우 작동이 안되는 경우가 많다
System.out.println("주소를 입력하세요: ");
String address = scanner.nextLine();
System.out.print(address);
}
}
nextLine를 사용하여 출력을 하면된다
<자바 제어문>
코드가 순서대로 진행되지 않고 조건에 따라 일부분만 실행하거나, 일부 코드를 반복하여 실행할수 있도록 하는 문법
제어문에는 조건문 과 반복문이 있다
조건문은 이전에 배웠던 if문이 있다
if문은 boolean타입의 변수 또는 식이 올 수있고
else에서는 조건식을 쓰지않는다
package ch04_if;
public class Ex01_ifBasic {
public static void main(String[] args) {
//if문
System.out.println("if문 전");
boolean cond = false;
if (cond) {
System.out.println("조건을 만족하면 내가 보임");
}
System.out.println("if믄 후");
// if else
System.out.println("if else문 전");
if (cond) {
System.out.println("조건 만족");
}else {
System.out.println("조건 만족하지 않음");
}
System.out.println("if else문 후");
int num1 = 10, num2 = 20;
if (num1 < num2) {
System.out.println("num2가 크다");
} else { // num1 >= num2
System.out.println("num1이 num2 보다 크거나 같다");
//if slse if
if(num1 > num2) {
System.out.println("num1이 크다");
}else if(num1 < num2){
System.out.println("num2가 크다");
}else if(num1 == num2) {
System.out.println("둘이 같다");
}else {
System.out.println("비교 불가");
}
}
}
}
여러 조건을 걸어서 if문으로 성적표를 출력 하려면
package ch04_if;
import java.util.Scanner;
public class Ex03_ifExample {
public static void main(String[] args) {
/**
* 스캐너로 점수(score)를 하나 입력받아서
* 90점 이상이면 A
* 80점 이상이면 B
* 70점 이상이면 C
* 60점 이상이면 D
* 60점 보다 적은 점수면 F
* 를 출력
*/
Scanner scanner=new Scanner(System.in);
int score = 0;
System.out.print("점수를 입력하세요");
score = scanner.nextInt();
if(score >=90) {
System.out.println("A입니다");
}else if(score >=80) {
System.out.println("B입니다");
}else if(score >=70 ) {
System.out.println("C입니다");
}else if(score >=60) {
System.out.println("D입니다");
}else {
System.out.println("F입니다");
}
}
}
위 코드와 같이 각각 조건문을 넣어서 출력을 해주면 된다
하지만 위와같이 하게된다면 각각 조건문을 정해주어야 하기때문에 중첩 if문을 사용해주면
System.out.println을 한번만 입력해주어도 된다
중첩if문이란 하나의 조건을 만족한 상태에서 다른 조건을 더 따져보는것인데
문법은
if([조건1]){
if([조건2]){
} else if ([조건3]){
조건 1,3 을 모두 만족하는경우
}else {
조건 1을 만족하지만 2,3은 만족하지 않는경우
}else{
조건1을 만족하지 않으면 바로 이 부분이 실행
}
이다
중첩 if문으로 위와 같은 코드를 짜게되면
package ch04_if;
import java.util.Scanner;
public class Ex04_ifExample {
public static void main(String[] args) {
/**
* 중첩 if 문을 적용한 학점 출력
* 100 점을 초과하거나 0점 미만의 점수를 입력하면 '입력범위를 초과하였습니다.'출력
* 0~100 점 사이의 값을 입력했다면 앞의 예제에서 했던 학점 출력을 진행함
* 단, 각 조건마다 학점값을 출력하는 것이 아니라 학점 출력을 위한 print 문장은 한번만 사용
*/
Scanner scnner = new Scanner(System.in);
int score = 0;
System.out.print("점수를 입력 하세요: ");
score = scnner.nextInt();
String grade="";
if(score > 100 || score< 0) {
System.out.println("범위를 초과하였습니다");
}else {
if(score >=90) {
grade = "A";
}else if(score >=80) {
grade = "B";
}else if(score >=70 ) {
grade = "C";
}else if(score >=60) {
grade = "D";
}else {
grade = "F";
}
System.out.println(grade);
}
}
}
위와 같이 코드를 짤수있다
처음 int score 로 값의 범위를 지정하고
String grade 변수로 학점값을 지정해준뒤
조건값을 정해준뒤 출력을 할수있다
'개발일지' 카테고리의 다른 글
개발일지 8일차 -for문의 응용- (2) | 2023.12.05 |
---|---|
개발일지 7일차 -Switch case & for반복문- (0) | 2023.12.04 |
개발일지 5일차 -변수,연산자- (2) | 2023.11.30 |
개발일지 4일차 -Java- (0) | 2023.11.29 |
개발일지 3일차 -function,while- (1) | 2023.11.28 |