1. Scanner
- 지금까지 입력 없이 System.out을 통해 출력했다면, System.in을 통해 사용자의 입력을 받을 수 있음.
- 자바는 System.in을 통해 사용자 입력을 받으려면 여러 과정을 거쳐야 해서 복잡하고 어려움.
- 자바는 이런 문제를 해결하기 위해 Scanner라는 클래스를 제공하며, 사용자 입력을 매우 편리하게 받을 수 있게 함.
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);
}
}
[Scanner1]
○ Scanner scanner = new Scanner(System.in);
- 이 코드는 객체와 클래스를 배워야 정확히 이해 할 수 있는데 후에 배울 것임.
- 지금은 Scanner의 기능을 사용하기 위해 new를 사용해서 Scanner를 만드는 정도로 이해하자.
- Scanner는 System.in을 사용해서 사용자의 입력을 편리하게 받도록 도와줌.
- scanner는 변수를 선언한 것으로, 이 변수를 통해 scanner를 사용할 수 있음.
○ 타입
- scanner.nextLine() : 엔터(\n)를 입력할 때까지 문자를 가져옴.
- scanner.nextInt() : 입력을 int 형으로 가져옴. 정수 입력에 사용.
- scanner.nextDouble() : 입력을 double 형으로 가져옴. 실수 입력에 사용.
○ 주의 - 타입이 다르면 오류가 발생함 → InputMismatchExcpetion
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 result = num1 + num2;
System.out.println("두 수의 합은 : " + num1 + " + " + num2 + " = " + result);
}
}
[Scanner3]
- 사용자로부터 두 수를 입력받고, 그 합을 출력하는 예제.
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("더 큰 숫자는 : " + num1);
} else if (num1 < num2) {
System.out.println("더 큰 숫자는 : " + num2);
} else {
System.out.println("두 숫자는 같습니다.");
}
}
}
[Scanner3]
- 사용자로부터 두 개의 정수를 입력 받고, 더 큰 수를 출력하는 프로그램 작성.
- 두 숫자가 같은 경우 두 숫자는 같다고 출력하면 됨.
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);
}
}
}
[ScannerWhile1]
- 한 번 실행하면 사용자가 프로그램을 종료할 때까지 반복해서 실행하게 됨.
- 사용자이 입력을 지속해서 받아들이고, 반복해서 동작하는 프로그램 개발하는 것.
- 사용자가 입력한 문자열을 그대로 출력하는 예제.
- exit라는 문자가 입력되면 프로그램 종료.
- 프로그램은 반복해서 실행.
- while(true) : 중간에 break문을 만나기 전까지 무한 반복.
package scanner;
import java.util.Scanner;
public class ScannerWhile2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("첫 번째 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램 종료.");
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 result = num1 + num2;
System.out.println("두 수의 합은 : " + result);
}
}
}
[ScannerWhile2]
- 첫 번째 숫자와 두 번째 숫자를 더해서 출력하는 프로그램 개발.
- 첫 번재 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램 종료.
- 프로그램은 반복해서 실행.
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 number = scanner.nextInt();
if(number == 0) {
break;
}
sum += number;
}
System.out.println("입력한 모든 정수의 합은 : " + sum);
}
}
[ScannerWhile3]
- 사용자 입력을 받아 그 합계를 계산하는 프로그램 개발.
- 사용자는 한 번에 한 개의 정수를 입력할 수 있고, 사용자가 0을 입력하면 프로그램은 종료.
- 이 때, 프로그램이 종료될 때까지 사용자가 입력한 모든 정수의 합을 출력.
1-1. 스캐너 예제
[ScannerEx1]
- 사용자로부터 입력받은 이름과 나이를 출력.
- 출력 형태는 "당신의 이름은 [이름]이고, 나이는 [나이]살입니다."
- 실행 결과 예시
당신의 이름을 입력하세요 : 자바
당신의 나이를 입력하세요 : 30
당신의 이름은 자바이고, 나이는 30살입니다.
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]
- 사용자로부터 하나의 정수를 입력받고, 이 정수가 홀수인지 짝수인지 판별하는 프로그램 작성.
- 실행결과 예시
하나의 정수를 입력하세요 : 1
입력한 숫자 1은(는) 홀수입니다.
하나의 정수를 입력하세요 : 4
입력한 숫자 4은(는) 짝수입니다.
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 number = scanner.nextInt();
if(number % 2 ==0) {
System.out.println("입력한 숫자 " + number + "은(는) 짝수 입니다.");
} else {
System.out.println("입력한 숫자 " + number + "은(는) 홀수 입니다.");
}
}
}
[ScannerEx3]
- 사용자로부터 음식의 이름(foodName), 가격(foodPrice), 그리고 수량(foodQuantity)을 입력받아, 주문한 음식의 총 가격을 계산하고 출력하는 프로그램 작성.
- 음식의 총 가격 계산 : 음식의 가격(foodPrice)과 수량(foodQuantity)을 곱한 값이고, 이를 totalPrice라는 이름의 변수에 저장.
- 주문 정보와 총 가격을 출력. 출력 형태는 "[음식 이름] [수량]개를 주문하셨습니다. 총 가격은 [총 가격]원입니다."
- 실행 결과 예시
음식 이름을 입력해주세요 : 피자
음식의 가격을 입력해주세요 : 20000
음식의 수량을 입력해주세요 : 2
피자 2개를 주문하셨습니다. 총 가격은 40000원입니다.
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]
- 사용자로부터 하나의 정수 n을 입력받고, 입력받은 정수 n의 구구단을 출력하는 프로그램을 작성.
- 실행 결과 예시
구구단의 단 수를 입력해주세요 : 8
8단의 구구단 :
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
...
8 X 9 = 72
package scanner.ex;
import java.util.Scanner;
public class ScannerEx4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("구구단의 단 수를 입력해주세요 : ");
int n = scanner.nextInt();
System.out.println(n + "단의 구구단 : ");
/*for(int i = n; i < 9; i++) {
for(int j = 1; j < 10; j++) {
System.out.println(i + " X " + j + " = " + i * j);
}
}*/
for(int i = 1; i <= 9; i++) {
System.out.println(n + " X " + i + " = " + n * i);
}
}
}
주석처리된 게 내가 작성한 거였는데, 번거롭게 저렇게 작성할 필요가 없었음.
이중 for문 사용하지 않고, 출력을 입력받은 정수 n으로 하면 됨.
[ChangeVarEx]
- 변수 a = 10이 들어있고, b = 20이 들어있음.
- 변수 a의 값과 변수 b의 값을 서로 바꾸는 프로그램 작성.
- 출력 결과
a = 20
b = 10
package scanner.ex;
public class ChangeVarEx {
public static void main(String[] args) {
int a = 10;
int b = 20;
int temp;
temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
[ScannerEx5]
- 사용자로부터 두 개의 정수 입력받고, 이 두 정수 사이의 모든 정수를 출력하는 프로그램 작성.
- 사용자에게 첫 번째 숫자 입력받고, 변수의 이름은 num1임.
- 사용자에게 두 번째 숫자 입력받고, 변수의 이름은 num2임.
- 만약 첫 번째 숫자 num1이 두 번째 숫자 num2보다 크다면, 두 숫자 교환. (참고 : 교환 위해 임시 변수 사용 고려.)
- num1부터 num2까지의 각 숫자 출력.
- 출력 결과에 유의. 다음 예시와 같이 2, 3, 4, 5처럼 ,로 구분해서 출력
- 실행 결과 예시
첫 번째 숫자를 입력하세요 : 2
두 번째 숫자를 입력하세요 : 5
두 숫자 사이의 모든 정수 : 2, 3, 4, 5
첫 번째 숫자를 입력하세요 : 7
두 번째 숫자를 입력하세요 : 5
두 숫자 사이의 모든 정수 : 5, 6, 7
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();
int temp;
if (num1 > num2) {
temp = num1;
num1 = num2;
num2 = temp;
}
System.out.print("두 사이의 모든 정수 : ");
for(int i = num1; i <= num2; i++) {
System.out.print(i);
if(i != num2) {
System.out.print(", ");
}
}
}
}
[ScannerWhileEx1]
- 사용자로부터 이름과 나이를 반복해서 입력받고, 입력받은 이름과 나이를 출력하는 프로그램 작성.
- 사용자가 "종료"를 입력하면 프로그램 종료.
- 실행 결과 예시
이름을 입력하세요 (종료를 입력하면 종료) : 자바
나이를 입력하세요 : 30
이름을 입력하세요 (종료를 입력하면 종료) : 하니
나이를 입력하세요 : 20
이름을 입력하세요 (종료를 입력하면 종료) : 종료
프로그램을 종료합니다.
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print("이름을 입력하세요 (종료를 입력하면 종료) : ");
String name = scanner.nextLine();
if(name.equals("종료")) {
System.out.println("프로그램을 종료합니다");
break;
}
System.out.print("나이를 입력하세요 : ");
int age = scanner.nextInt();
scanner.nextLine();
System.out.println("입력한 이름 : " + name + ", 나이 : " + age);
}
}
}
나이를 입력받는 문장 다음에 Scanner.nextLine();을 입력해 주는데 숫자 입력 후의 줄 바꿈 처리를 위해 작성한 것.
[ScannerWhileEx2]
- 사용자로부터 상품의 가격(price)과 수량(quantity)을 입력받고, 총 비용을 출력하는 프로그램 작성.
- 가격과 수량 입력받은 후 이들의 곱을 출력.
- 출력 형태는 "총 비용 : [곱한 결과]"이어야 함.
- -1을 입력하여 가격 입력 종료.
- 실행 결과 예시
상품의 가격을 입력하세요 (-1을 입력하면 종료) : 1000
구매하려는 수량을 입력하세요 : 3
총 비용 : 3000
상품의 가격을 입력하세요 (-1을 입력하면 종료) : -1
프로그램을 종료합니다.
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.print("상품의 가격을 입력하세요 (-1을 입력하면 종료) : ");
int price = scanner.nextInt();
if (price == -1) {
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.print("구매하려는 수량을 입력하세요 : ");
int quantity = scanner.nextInt();
int totalPrice = price * quantity;
System.out.println("총 비용 : " + totalPrice);
}
}
}
ScannerWhileEx3]
- 사용자로부터 여러 개의 숫자를 입력받고, 그 숫자들의 합계와 평균을 계산하는 프로그램 작성.
- 사용자는 숫자를 입력하고, 마지막에는 -1을 입력하여 숫자 입력을 종료한다고 가정.
- 모든 숫자의 입력이 끝난 후에는, 숫자들의 합계 sum과 평균 average를 출력. 평균은 소수점 아래까지 계산.
- 실행 결과 예시
숫자를 입력하세요. 입력을 중단하려면 -1을 입력하세요 :
1
2
3
4
-1
입력한 숫자들의 합계 : 10
입력한 숫자들의 평균 : 2.5
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
int count = 0;
int number = 0;
System.out.println("숫자를 입력하세요. 입력을 중단하려면 -1을 입력하세요 : ");
while(true) {
number = scanner.nextInt();
if(number == -1) {
break;
}
sum += number;
count++;
}
double average = (double) sum / count;
System.out.println("입력한 숫자드의 합계 : " + sum);
System.out.println("입력한 숫자들의 평균 : " + average);
}
}
count 변수를 만들어 개수를 세고, 평균을 계산할 때 사용하는 것. 다음에 다시 또 풀어보기.
while 문을 아래처럼 다르게 작성해서 입력할 수 있음.
while((number = scanner.nextInt() != -1)) {
sum += number;
count++;
}
[ScannerWhileEx4]
- 사용자로부터 상품 정보(상품명, 가격, 수량)를 입력받고, 이들의 총 가격을 출력하는 프로그램 작성,
- 사용자는 여러 상품을 추가하고 결제할 수 있으며, 프로그램을 언제든지 종료할 수 있음.
- 사용자에게 다음 세 가지 옵션을 제공해야 함.
1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료. 옵션은 정수로 입력받으며, 옵션을 저장하는 변수 이름은 option이어야 함.
- 상품 입력 옵션을 선택하면, 사용자에게 상품명과 가격, 수량을 입력받음.
- 결제 옵션을 선택하면, 총 비용을 출력하고 총 비용을 0으로 초기화. (사용자가 총 비용을 확인하고, 결제를 완료했다고 가정. 따라서 다음 사용자를 위해 총 비용을 다시 0으로 초기화.)
- 프로그램 종료 옵션을 선택하면, "프로그램을 종료합니다."라는 메시지를 출력하고 프로그램을 종료.
- 위의 세 가지 옵션 외에 다른 값을 입력하면, "올바른 옵션을 선택해주세요,"라는 메시지 출력.
- 실행 결과 예시
1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료
1
상품명을 입력하세요 : 스프링
상품의 가격을 입력하세요 : 30000
구매 수량을 입력하세요 : 1
상품명 : 스프링 가격 : 30000 수량 : 1 합계 : 30000
1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료
1
상품명을 입력하세요 : JPA
상품의 가격을 입력하세요 : 40000
구매 수량을 입력하세요 : 2
상품명 : JPA 가격 : 40000 수량 : 2 합계 : 80000
1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료
2 총 비용 : 110000
1 : 상품 입력, 2 : 결제, 3 : 프로그램 종료
3
프로그램을 종료합니다.
package scanner.ex;
import java.util.Scanner;
public class ScannerWhileEx4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int totalCost = 0;
while(true) {
System.out.println("1 : 상품입력, 2 : 결제, 3 : 프로그램 종료");
int option = scanner.nextInt();
if(option == 1) {
scanner.nextLine();
System.out.print("상품명을 입력하세요 : ");
String product = scanner.nextLine();
System.out.print("상품의 가격을 입력하세요 : ");
int price = scanner.nextInt();
System.out.print("구매 수량을 입력하세요 : ");
int quantity = scanner.nextInt();
int total = price * quantity;
totalCost += total;
System.out.println("상품명 : " + product + " 가격 : " + price + " 수량 : " + quantity + " 합계 : " + total);
} else if (option == 2) {
System.out.println("총 비용 : " + totalCost);
} else if (option == 3) {
System.out.println("프로그램을 종료합니다.");
break;
} else {
System.out.println("올바른 옵션을 선택해주세요.");
}
}
}
}
'Studying > JAVA' 카테고리의 다른 글
[JAVA]_Method(메서드) (2) | 2024.12.14 |
---|---|
[JAVA]_Array(배열) (1) | 2024.12.09 |
[JAVA]_Casting(형변환) (0) | 2024.12.03 |
[JAVA]_Scope(스코프) (0) | 2024.12.03 |
[JAVA]_Loop Statement(반복문) (0) | 2024.12.03 |