7-1. Scanner
System.out을 통해 출력 했듯, System.in을 통해 사용자 입력을 받을 수 있다.
Scanner1.java
package scanner;
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요:");
String str = scanner.nextLine(); // 입력을 String으로 가져온다.
System.out.println("입력한 문자열: " + str);
System.out.print("정수를 입력하세요:");
int intValue = scanner.nextInt();
System.out.println("입력한 정수: " + intValue);
System.out.print("실수를 입력하세요:");
double doubleValue = scanner.nextDouble();
System.out.println("입력한 실수: " + doubleValue);
}
}
- scanner.nextLine(): 엔터(\n)를 입력할 때까지 문자를 가져온다.
- scanner.nextInt(): 입력을 int형으로 가져온다. (정수)
- scanner.nextInt() : 입력을 double형으로 가져온다. (실수)
- 타입이 다르면 오류가 발생한다.
print() vs println()
- print(): 출력하고 다음 라인으로 넘기지 않는다.
- println(): 출력하고 다음 라인으로 넘긴다.
- 엔터 키를 치면 ( \n )이라는 문자를 남기는 것
- 영어로 new line character, 한글로 줄바꿈 문자 또는 개행 문자
7-2. Scanner 기본 예제
두 수를 입력받고 그 합을 출력하는 예제
Scanner2.java
package scanner;
import java.util.Scanner;
public class Scanner2 {
public static void main(String[] args) {
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);
}
}
두 수를 입력받고 더 큰 수를 출력하는 예제. 두 숫자가 같은 경우 같다고 출력.
Scanner3.java
package scanner;
import java.util.Scanner;
public class Scanner3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 숫자:");
int num1 = scanner.nextInt();
System.out.print("두 번째 숫자:");
int num2 = scanner.nextInt();
if (num1 == num2) {
System.out.println("두 숫자가 같다.");
} else if (num1 > num2) {
System.out.println("더 큰 숫자: " + num1);
} else {
System.out.println("더 큰 숫자: " + num2);
}
}
}
7-3. Scanner 반복 예제
사용자가 입력한 문자열을 그래도 출력하는 예제
exit이라는 문자가 입력되면 프로그램 종료
프로그램은 반복해서 실행
ScannerWhile1.java
package scanner;
import java.util.Scanner;
public class ScannerWhile1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("문자열을 입력하세요(exit: 종료):");
String str = scanner.nextLine();
if (str.equals("exit")) {
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.println("입력한 문자열:" + str);
}
}
}
첫 번째 숫자와 두 번째 숫자를 더해서 출력하는 프로그램을 개발
첫 번째 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램을 종료
프로그램은 반복해서 실행
ScannerWhile2.java
package scanner;
import java.util.Scanner;
public class ScannerWhile2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("첫 번째 숫자:");
int num1 = scanner.nextInt();
System.out.print("두 번째 숫자:");
int num2 = scanner.nextInt();
if (num1 == 0 && num2 == 0) {
System.out.println("프로그램을 종료");
break;
}
int sum = num1 + num2;
System.out.println("두 숫자의 합: " + sum);
}
}
}
사용자 입력을 받아 그 합계를 계산하는 프로그램을 작성해야 한다.
사용자는 한 번에 한 개의 정수를 입력할 수 있으며, 사용자가 0을 입력하면 프로그램은 종료된다.
이 때, 프로그램이 종료될 때까지 사용자가 입력한 모든 정수의 합을 출력해야 한다.
ScannerWhile3.java
package scanner;
import java.util.Scanner;
public class ScannerWhile3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
while (true) {
System.out.print("정수를 입력하세요(0을 입력시 종료):");
int num = scanner.nextInt();
sum += num;
if (num == 0) {
System.out.println("입력한 모든 정수의 합: " + sum);
break;
}
}
}
}
7-1. 문제와 풀이1
ScannerEx1.java
package scanner.ex;
import java.util.Scanner;
public class ScannerEx1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("당신의 이름을 입력하세요:");
String name = scanner.nextLine();
System.out.print("당신의 나이를 입력하세요:");
int age = scanner.nextInt();
System.out.println("당신의 이름은 " + name + "이고, 나이는 " + age + "살 입니다.");
}
}
ScannerEx2.java
package scanner.ex;
import java.util.Scanner;
public class ScannerEx2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("하나의 정수를 입력하세요:");
int num = scanner.nextInt();
if (num % 2 == 0) {
System.out.println("입력한 숫자 " + num + "는 짝수입니다.");
} else {
System.out.println("입력한 숫자 " + num + "는 홀수입니다.");
}
}
}
ScannerEx3.java
package scanner.ex;
import java.util.Scanner;
public class ScannerEx3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("음식 이름을 입력해주세요:");
String foodName = scanner.nextLine();
System.out.print("음식의 가격을 입력해주세요:");
int foodPrice = scanner.nextInt();
System.out.print("음식의 수량을 입력해주세요:");
int foodQuantity = scanner.nextInt();
int totalPrice = foodPrice * foodQuantity;
System.out.println(foodName+" "+foodQuantity+"개를 주문하셨습니다. 총 가격은 "+totalPrice+"원 입니다. ");
}
}
ScannerEx4.java
package scanner.ex;
import java.util.Scanner;
public class ScannerEx4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("구구단의 단 수를 입력해주세요:");
int n = input.nextInt();
System.out.println(n + "단의 구구단:");
for (int i = 1; i <=9 ; i++) {
System.out.println(n + " x " + i + " = " + n * i);
}
}
}
7-2. 문제와 풀이2
ChangeVarEx.java
package scanner.ex;
public class ChangeVarEx {
public static void main(String[] args) {
int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
ScannerEx5.java
package scanner.ex;
import java.util.Scanner;
public class ScannerEx5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("첫 번째 숫자를 입력하세요:");
int num1 = scanner.nextInt();
System.out.print("두 번째 숫자를 입력하세요:");
int num2 = scanner.nextInt();
if (num1 > num2) { // 숫자 교환
int temp = num2;
num2 = num1;
num1 = temp;
}
for (int i = num1; i <= num2; i++) {
System.out.print(i);
if (i != num2) {
System.out.print(",");
}
}
}
}
7-3. 문제와 풀이3
ScannerWhileEx1.java
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("이름을 입력하세요 ('종료'를 입력하면 종료): ");
String name = input.nextLine();
if (name.equals("종료")) {
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.print("나이를 입력하세요: ");
int age = input.nextInt();
input.nextLine(); // 숫자 입력 후 줄바꿈 처리
System.out.println("입력한 이름: " + name + ", 나이: " + age);
}
}
}
- input.nextLine()을 하는 이유는 input.nextInt()가 40 \n(엔터) 를 입력했을 때, \n을 빼고 숫자 40만 가져가기 때문
- 남아 있는 \n을 다음 nextLine()에서 인식하고 빈 문자열을 넘기는 문제 발생
ScannerWhileEx2.java
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("상품의 가격을 입력하세요 ('-1' 입력하면 종료): ");
int price = input.nextInt();
if (price == -1) {
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.print("구매하는 수량을 입력하세요: ");
int quantity = input.nextInt();
input.nextLine(); // 숫자 입력 후 줄바꿈 처리
int totalPrice = price*quantity;
System.out.println("총 비용: " + totalPrice);
}
}
}
7-4. 문제와 풀이4
ScannerWhileEx3.java
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = 0;
int sum = 0;
int input = 0;
System.out.println("숫자를 입력하세요. 입력을 중단하려면 -1을 입력하세요:");
while (( input = scanner.nextInt() ) != -1) {
count++;
sum += input;
}
double average = (double) sum / count;
System.out.println("입력한 숫자들의 합계:"+sum);
System.out.println("입력한 숫자들의 평균:"+average);
}
}
ScannerWhileEx4.java
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int totalCost = 0;
while (true) {
System.out.println("1: 상품 입력, 2: 결제, 3: 프로그램 종료");
int option = input.nextInt();
if (option == 1){
input.nextLine(); // 이전에 입력된 개행문자 제거
System.out.print("상품명을 입력하세요: ");
String product = input.nextLine();
System.out.print("상품의 가격을 입력하세요: ");
int price = input.nextInt();
System.out.print("구매 수량을 입력하세요: ");
int quantity = input.nextInt();
totalCost = price * quantity;
System.out.println("상품명:" + product + " 가격:" + price + " 수량:" + quantity + " 합계:" + totalCost);
} else if (option == 2) {
System.out.println("총 비용: " + totalCost);
totalCost = 0; // 결제 후 비용 초기화
} else if (option == 3) {
System.out.println("프로그램을 종료합니다.");
break;
} else {
System.out.println("올바른 옵션을 선택해주세요.");
}
}
}
}
'IT > 김영한의JAVA입문_inFlearn' 카테고리의 다른 글
6. 스코프, 형변화 - 지역 변수와 스코프 / 스코프 존재 이유 / 자동 형변환 / 명시적 형변환 / 계산과 형변환 (1) | 2024.12.27 |
---|---|
5. 반복문 - while문 / do-while문 / break, continue / for문 / 중첩 반복문 / 문제와 풀이1~2 (1) | 2024.12.26 |
4. 조건문 - if문1~3 / switch문 / 삼항 연산자 / 문제와 풀이1~2 (1) | 2024.12.24 |
3. 연산자 - 산술 연산자 / 문자열 더하기 / 연산자 우선순위 / 증감 연산자 / 비교 연산자 / 논리 연산자 / 대입 연산자 (1) | 2024.12.19 |
2. 변수 - 변수 시작 / 변수 값 변경 / 선언과 초기화 / 변수 타입 / 명명 규칙 / 문제와 풀이 (1) | 2024.12.04 |