문제
- 사칙연산을 할 수 있는 계산기를 만드세요.
- 단, main에서 메소드를 호출해서 기능구현.
- 숫자를 입력받을 때는 공백이나 문자가 아닌 숫자를 입력받을 것.
- 연산자를 입력받을 때는 사칙연산만 입력받을 것.
보완할 점
- " / "연산자를 입력했을 경우에는 0을 입력할 수 없도록 재구성.(-> 추후에 해보기)
- 메소드의 매개변수에 무엇을 전달해야 하는지 잘 생각해보기.
- continue문 적절히 사용해서 다시 while문에 진입하게 하기
소스코드
import java.util.Scanner;
public class CalculatorFuction {
public static void main(String[] args) {
int num1, num2;
String oper;
//첫번째수 입력
num1 = numberinput("첫번째");
//연산자입력
oper = operator();
//두번째수 입력
num2 = numberinput("두번째");
//연산
int result = result(num1, num2, oper);
//결과
print(num1, num2, oper, result);
}
static int numberinput(String no) {
Scanner sc = new Scanner(System.in);
String str;
while(true) {
System.out.print( no + " 숫자> ");
str = sc.nextLine();
if(str.equals("")) {
System.out.println("공백입니다. 다시 입력하세요");
continue;
}
boolean ischeck = checknumber(str);
if(ischeck == false) {
continue;
}else {
break;
}
}
return Integer.parseInt(str);
}
static boolean checknumber(String str) {
boolean ischeck = true;
for(int i=0; i<str.length(); i++) {
char ch = str.charAt(i);
if('0' > ch || ch > '9') {
System.out.println("문자가 포함되어있습니다. 다시 입력하세요");
ischeck = false;
break;
}
}
return ischeck;
}
static String operator() {
Scanner sc = new Scanner(System.in);
String oper = "";
while(true) {
System.out.print("수행할 연산을 입력하세요 ( + , - , * , / ) > ");
oper = sc.next();
if(oper.equals("+") || oper.equals("-") || oper.equals("*") || oper.equals("/")) {
break;
}else {
System.out.print("올바른 연산자를 입력하세요 ");
continue;
}
}return oper;
}
static int result(int x, int y, String oper) {
int result = 0;
switch(oper) {
case "+" :
result = (x + y);
break;
case "-" :
result = (x - y);
break;
case "*" :
result = (x * y);
break;
case "/" :
result = (x / y);
}
return result;
}
static void print(int x, int y, String oper, int result) {
System.out.println("수행결과 > " + x + " " + oper +" " + y + " = " + result);
}
}
'알고리즘 문제연습 > 기초 알고리즘' 카테고리의 다른 글
[007] 최대 공약수 구하기 (0) | 2021.05.13 |
---|---|
[006] 대소문자 변환 (대문자->소문자, 소문자->대문자) (0) | 2021.05.13 |
[004] 10진수를 2진수로 변환하기 (0) | 2021.05.13 |
[003] 최빈수 값 구하기 (0) | 2021.05.13 |
[002] 피보나치 수열 (0) | 2021.05.13 |
댓글