JAVA
#13 [Java] ์ฌ์น์ฐ์ฐ ๊ณ์ฐ๊ธฐ
dP fla
2022. 10. 27. 14:49
๐ ์ฌ์น์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค๊ณ
๐ ์ฌ์น์ฐ์ฐ ๊ณ์ฐ๊ธฐ ๊ตฌํ
๐ป Loader.java
package loader;
import front.Front;
public class Loader {
public static void main(String[] args) {
System.out.println("Loading...\n");
Front front = new Front(1); // ์ธ์ 1๊ณผ ํจ๊ป frontend ์์ฑ์ ํธ์ถ
System.out.println("Closing...");
}
}
๐ป Front.java
package front;
import java.util.Scanner;
import back.Back;
public class Front {
public Front (int recordIdx) {
this.controller(recordIdx);
}
private void controller(int recordIndex) { // controller ๋ฉ์๋
Scanner scanner = new Scanner(System.in); // ์ค์บ๋ ๊ฐ์ฒด ์์ฑ
String title = this.makeTitle(); // String title ๊ฐ์ฒด์ makeTitle์ return ๊ฐ (***** JS Framework Calculator v1.0
// ***** ... ) ์ ์ฅ
String[][] menu = { { "EXIT", "ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.~" }, { "๋ฉ์ธ", "์ฐ์ฐํ๊ธฐ", "๋๋ด๊ธฐ" },
{ "์ฐ์ฐ", "์๋ก์ด ์ฐ์ฐ", "์ด์ด์ ์ฐ์ฐ", "์ด์ ํ๋ฉด" } }; // String menu 2์ฐจ์ ๋ฐฐ์ด ๊ฐ์ฒด ์์ฑ
String userData = new String(); // ์
๋ ฅ๋ฐ์์ ์ ์ฅํ String ๊ฐ์ฒด ์์ฑ
String message = new String(); // ์ค๋ฅ ๋ฐ์์ ์ค๋ฅ๋ฉ์ธ์ง๋ฅผ ์ ์ฅํ message ๊ฐ์ฒด ์์ฑ
int selectMenu; // String์ธ userData๋ฅผ intํ์ผ๋ก ๋ฐ๊พผ selectMenu
boolean loopCheck = true; // loopCheck์ ์ด๊ธฐ๊ฐ์ true
while (true) {// ๋ฐ๋ณต๋ฌธ ์์
this.display(title); // (***** JS Framework Calculator v1.0 ***** ... )์ถ๋ ฅ
if (message != null) // (์ค๋ฅ)๋ฉ์ธ์ง๊ฐ null๊ฐ์ด ์๋๋ผ๋ฉด
this.display(message); // (์ค๋ฅ)๋ฉ์ธ์ง ์ถ๋ ฅ
this.display(this.makeSubMenu(menu[recordIndex]));
/* recordIndex์ ํด๋นํ๋ ๋ฐฐ์ด menu ์์ (1์ฐจ์ ๋ฐฐ์ด)์ makeSubMenu์ ์ธ์๋ก ๋ฃ์ด์ ์ถ๋ ฅ
* ( [ ๋ฉ์ธ ]______________________________________
* 1. ์ฐ์ฐํ๊ธฐ 0. ๋๋ด๊ธฐ ...)
*/
if (!loopCheck) // loopCheck๊ฐ false๋ฉด break; else ์์
break; // ๋ฐ๋ณตํ๋ค๊ฐ loopCheck๊ฐ false๋ฉด break...
userData = this.userInput(scanner);// userData๋ฅผ scanner๋ก ์
๋ ฅ๋ฐ์
if (this.isInteger(userData)) { // String userData๊ฐ ์ ์๋ก ๋ณํํ ์ ์๋์ง ํ์ธ (boolean์ผ๋ก ๋ฆฌํด๋จ), if๊ฐ true๋ฉด(์ ์๋ก ๋ฐ๊ฟ ์
// ์์ผ๋ฉด) ์คํ
selectMenu = this.convertToInteger(userData); // selectMenu(int)์ userData๋ฅผ ์ ์๋ก ๋ณํํ ๊ฐ
// ๋์
(convertToInteger() => String -> int)
if (this.isIntegerRange(selectMenu, 0, menu[recordIndex].length - 2)) { // selectMenu(int)๊ฐ ์ ํํ ์ ์๋ ๊ฐ
// ๋ด์ ์๋์ง ํ์ธ
message = null; // ์ ํํ ์ ์๋ ๋ฒ์ ๋ด์ ์๋ค๋ฉด message๋ฅผ null๋ก ์ด๊ธฐํ
recordIndex += (selectMenu == 0) ? -1 : 1; // ์ฌ์ฉ์๊ฐ 0์ ์ ํํ๊ฒ ์๋๋ผ๋ฉด recordIndex ๊ฐ์ +1์ ํ๊ณ 0์ ์ ํํ๋ค๋ฉด -1(์ด์
// ๋ฉ๋ด์ผ๋ก ๋์๊ฐ)
if (recordIndex == 0) { // recordIndex๊ฐ 0์ด๋ผ๋ฉด ([Exit] ~~~ )
loopCheck = false; // loopCheck = false๋ก while๋ฌธ ๋น ์ ธ๋์ด
} else if (recordIndex >= 2) { // recordIndex๊ฐ 2๋ณด๋ค ํด ๋ (๋ฉ์ธ->์ฐ์ฐ)
recordIndex = this.operator(title, menu[recordIndex], scanner);
// operator๋ฉ์๋์์ returnํ ๊ฐ(1)์ recordIndex์ ์ฌํ ๋น(๋ฉ์ธ ์ธ๋ฑ์ค๊ฐ ๋จ)
}
} else { // selectMenu๊ฐ ๋ฒ์๋ด ์ซ์๊ฐ ์๋๊ฒฝ์ฐ ์ค๋ฅ๋ฉ์ธ์ง ์ถ๋ ฅ
message = "[ 0~" + (menu[recordIndex].length - 2) + " ๋ฒ์๋ด ์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์]\n\n";
}
} else {// userData๊ฐ int๊ฐ ์๋๊ฒฝ์ฐ ์ค๋ฅ ๋ฉ์ธ์ง ์ถ๋ ฅ
message = "[ ์ซ์๋ก ์
๋ ฅํด ์ฃผ์ธ์ ]\n\n";
}
}
scanner.close();
}
private String makeTitle() { // ํ์ดํ์ ๋ง๋๋ ๋ฉ์๋
StringBuffer title = new StringBuffer(); // String ๋ฒํผ์ ๋ฌธ์์ด์ ์ถ๊ฐ(๊ตณ์ด String Buffer ์ธํ์ ์์)
title.append("****************************************************\n\n");
title.append(" JS Framework Calculator v1.0\n");
title.append(" Designed By Lee Yerim\n\n");
title.append("****************************************************\n\n");
return title.toString(); // ํ์ดํ์ ๋ง๋ค์ด์ String์ ํธ์ถํ๋ ๋ฉ์๋๋ก ๋ฐํ
}
/*
* [ MAIN ]________________________________________
*
* 1. ์ฐ์ฐํ๊ธฐ 0. ๋๋ด๊ธฐ __________________________________ select :
*/
private String makeSubMenu(String[] menu) { // ๋ฐฐ์ด์ ์ธ์๋ก ๋ฐ์ String์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฉ์๋ (์์ ๊ฐ์ ํํ๋ก)
StringBuffer subMenu = new StringBuffer();
subMenu.append(" [ " + menu[0] + " ]");
subMenu.append(" _____________________________________");
for (int underBar = 0; underBar <= 4 - menu[0].length(); underBar++) {
subMenu.append("_");
}
subMenu.append("\n\n");
if (menu.length <= 2) {
subMenu.append(" " + menu[menu.length - 1] + " \n");
subMenu.append(" ________________________________________________\n");
}
else {
for (int colIdx = 1; colIdx < menu.length; colIdx++) {
if (colIdx == menu.length - 1) {
subMenu.append("0. " + menu[colIdx] + " \n");
}
else {
subMenu.append(" " + colIdx + ". " + menu[colIdx] + " ");
}
}
subMenu.append(" __________________________________ select : ");
}
return subMenu.toString(); // String ์ผ๋ก ๋ฐํํด์ ํธ์ถํ๋ ๋ฉ์๋๋ก ๋ฐํ
}
/*
* ์ฌ์ฉ์ ์
๋ ฅ ์ ์ฉ ๋ฉ์๋ ๊ณ ๋ ค์ฌํญ : 1. ์ซ์๋ก ๋ณํ์ด ๋ถ๊ฐ๋ฅํ ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋์ด์ง ๊ฒฝ์ฐ ํด๊ฒฐ๋ฐฉ์ 2. Scanner Class์
* Life Cycle๊ณผ Performance
*/
private String userInput(Scanner scanner) { // ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ๋ userInput ๋ฉ์๋
return scanner.next();
}
/* ์ ์ ๋ณํ์ฌ๋ถ ์ฒดํฌ */
private boolean isInteger(String value) { // String ๊ฐ์ ๋ฐ์์ ์ ์๋ก ๋ณํํ ์ ์๋์ง ํ์ธ ํ, boolean๊ฐ์ ํธ์ถํ๋ ๋ฉ์๋๋ก ๋ฐํ (true,false)
boolean isResult = true; // isResult์ ์ด๊ธฐ๊ฐ์ true
try { // value๋ฅผ int๋ก ๋ณํํด๋ณด๊ณ
Integer.parseInt(value);
} catch (Exception e) { // ์๋๋ฉด true ์๋ isResult์ false ๋์
isResult = false;// e.printStackTrace();
}
return isResult; // boolean ๊ฐ์ธ isResult๋ฅผ ๋ฐํ -> ํธ์ถํ๋ ๋ฉ์๋๋ก ๋ค์ ๋์๊ฐ
}
/* ๋ฌธ์ >> ์ ์ ๋ณํ */
private int convertToInteger(String value) { // String ๊ฐ์ฑ (value)๋ฅผ ๋ฐ์์
return Integer.parseInt(value); // String value๋ฅผ intํ์ผ๋ก ๋ฐ๊พผ ๊ฐ์ ํธ์ถํ๋ ๋ฉ์๋๋ก ๋ฐํ
}
/* ์ ์์ ๋ฒ์ ์ฒดํฌ */
private boolean isIntegerRange(int value, int starting, int last) { // ์ ์์ ๋ฒ์๋ฅผ ํ์ธํ๋ ๋ฉ์๋, (๋น๊ตํ ๊ฐ, ์ต์๊ฐ, ์ต๋๊ฐ)์ ๋ฐ์์ ๋ฒ์๋ด์
// ์์ผ๋ฉด boolean๊ฐ์ ํธ์ถํ๋ ๋ฉ์๋๋ก ๋ฐํ
return (value >= starting && value <= last) ? true : false; // ๋ฒ์๋ด์ ์์ผ๋ฉด true return, ๋ฒ์ ๋ด์ ์์ผ๋ฉด false return
}
/* ์ถ๋ ฅ ์ ์ฉ ๋ฉ์๋ */
private void display(String text) { // String๊ฐ์ ์ถ๋ ฅ
System.out.print(text);
}
/* ์ฐ์ฐ Controller */
private int operator(String title, String[] menu, Scanner scanner) { // title = (***** JS Framework Calculator v1.0
// ***** ... ),
// menu = {"์ฐ์ฐ", "์๋ก์ด ์ฐ์ฐ", "์ด์ด์ ์ฐ์ฐ", "์ด์ ํ๋ฉด"} (menu[2]), scanner๊ฐ์ฒด
Back backend = new Back(); // ์ฐ์ฐ์ ์ํํ backend ์์ฑ์ ํธ์ถ
int[] data = new int[4]; // ์ฐ์ฐํ ๊ฐ๊ณผ ์ฐ์ฐ์๋ฅผ ์ ์ฅํ intํ ๋ฐฐ์ด data[4] ์ ์ธ 0์ผ๋ก ์ด๊ธฐํ๋จ
String[] subTitle = { "์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์ ", "์ฐ์ฐ์๋ฅผ ์ ํํด์ฃผ์ธ์", "์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์", "์ฐ์ฐ๊ฒฐ๊ณผ" }; // title๋ก ์ธ Stringํ ๋ฐฐ์ด ์ ์ธ+ํ ๋น
String temp = new String(); // ์ฌ์ฉ์์ ์
๋ ฅ๊ฐ์ ์์๋ก ์ ์ฅํ temp Stringํ ๋ณ์ ์ ์ธ
String message = new String(); // ์ค๋ฅ ๋ฉ์ธ์ง String์ ๋ด์ String ๊ฐ์ฒด ์์ฑ
boolean loopCheck = true; // while๋ฌธ์ ์ ์ดํ loopCheck ์ ์ธ ์ด๊ธฐ๊ฐ true
boolean isFormula = false; // ์์์ ์ถ๋ ฅํ ์ง ๋ง์ง ์ ์ดํ isFormula ์ ์ธ, ์ด๊ธฐ๊ฐ false
boolean run = true; // while๋ฌธ์ ์ ์ดํ run ์ ์ธ ์ด๊ธฐ๊ฐ true
int step = 12; // step์ ์ด๊ธฐ๊ฐ์ 12
while (run) { // ๋ฐ๋ณต๋ฌธ 1(run)
while (loopCheck) { // ๋ฐ๋ณต๋ฌธ 2(loopCheck)
this.display(title); // title์ถ๋ ฅ (***** JS Framework Calculator v1.0 ***** ... )
switch (step) {// ์ด๊ธฐ๊ฐ : 12๋ก ์์
case 12:
case 22:
case 32:
case 42: // step์ ๊ฐ์ด 12,22,32,42์ผ ๊ฒฝ์ฐ
this.display(makeSubTitle(subTitle[(step / 10) - 1]));
// 12์ผ๊ฒฝ์ฐ subTitle[0]("์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์ "), (12/10)-1 = 0์ด๋ผ์.
// 22์ผ ๊ฒฝ์ฐ subTitle[1]("์ฐ์ฐ์๋ฅผ ์ ํํด์ฃผ์ธ์"),
// 32์ผ ๊ฒฝ์ฐ subTitle[2]("์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์"),
// 42์ผ ๊ฒฝ์ฐ subTitle[3]("์ฐ์ฐ๊ฒฐ๊ณผ") ์ถ๋ ฅ
if (message != null) { // String message์ ํ ๋น๋ ๊ฐ์ด ์๋ค๋ฉด
this.display(message + "\n"); // ์ถ๋ ฅ
message = null;// ์ถ๋ ฅํ์ message์ ํ ๋น๋ ๊ฐ์ ์ด๊ธฐํ (null)
}
if (isFormula) { // data[0]์ ๊ฐ์ ๋ฃ์ ์ํ๊ฐ ์๋๋ผ๋ฉด ์์์ ์ถ๋ ฅํ์ง ์์๋๋จ
// -> ์ ์ดํ๊ธฐ ์ํ isFormula (์ด๊ธฐ๊ฐ false๋๊น ์๋ก ์ฐ์ฐ์์ ์ฒซ๋ฒ์งธ ์ซ์ ์
๋ ฅ์ ์์์ด ์ถ๋ ฅ๋์ง ์์)
if (step != 42) // step์ด 42๊ฐ ์๋๊ฒฝ์ฐ(๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅํ ๋ ์ ์ธ) ์์ ์ถ๋ ฅ
this.display(" [์์] ");
for (int dataIdx = 0; dataIdx < data.length; dataIdx++) { // ์์์ ์ถ๋ ฅ (4๋ฒ ๋ฐ๋ณต)
if (data[dataIdx] != 0) {// data์์ ๊ฐ์ด ์ด๊ธฐํ๊ฐ(0)์ด ์๋ ๊ฒฝ์ฐ -> ๋ฐฐ์ด์์ ๊ฐ์ด ๋ค์ด์๋ ๊ฒฝ์ฐ!!
this.display(" " + (dataIdx == 1 ? this.convertToOperator(data[dataIdx]) : data[dataIdx]));
// dataIdx๊ฐ ์ฐ์ฐ์ ์๋ฆฌ๋ฉด ์ซ์๋ง๊ณ "์ฐ์ฐ์"(String)๋ก ๋ฐ๊ฟ์ ์ถ๋ ฅํ๊ณ , ์ซ์์๋ฆฌ๋ฉด ์ซ์๋ฅผ ์ถ๋ ฅ
} else {// data์์ ๊ฐ์ด ์ด๊ธฐํ๊ฐ (0) -> ๋ฐฐ์ด์์ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์ ๋ ๋น๊ตํ์ง ์๊ณ break๋ก for๋ฌธ ํ์ถ
break;
}
}
}
step++; // step์ ๊ฐ์ 1์ฆ๊ฐ, step 12->13 /step 22->23 /step 32->33 /step 42->43
case 13:
case 23:
case 33:
case 43: // step์ ๊ฐ์ด 13,23,33,43์ผ ๊ฒฝ์ฐ
isFormula = true; // isFormula๋ฅผ true๋ก ๋ฐ๊ฟ. ์์์ ์ถ๋ ฅํด์ผํ๋๊น.
this.display(step == 23 ? "\n[์ ํ : 1. ๋ํ๊ธฐ 2. ๋นผ๊ธฐ 3. ๊ณฑํ๊ธฐ 4. ๋๋๊ธฐ] : " : "");// step์ด 23(์ฐ์ฐ์ ์ ํํ๋ step, ์ฒซ๋ฒ์งธ ์ซ์๋ฅผ ๋ฃ์ ์ดํ)์ด๋ผ๋ฉด ์ฐ์ฐ์ ์ ํ ๋ฉ๋ด๋ฅผ ์ถ๋ ฅ, ์๋๋ฉด ์ถ๋ ฅ x
if (step != 43) {// step์ด 43์ด ์๋๊ฒฝ์ฐ ์ฌ์ฉ์์ ์
๋ ฅ์ ๋ฐ์
temp = this.userInput(scanner); // String temp์ ์ฌ์ฉ์ ์
๋ ฅ์ ๋ฐ์ step=43์ธ ๊ฒฝ์ฐ(์ฐ์ฐ ๋จ๊ณ์ผ ๊ฒฝ์ฐ ์ฌ์ฉ์์ ์
๋ ฅ์ ๋ฐ์ ํ์๊ฐ
// ์์)
if (this.isInteger(temp)) { // ๋ง์ฝ String temp์ ๊ฐ์ int๋ก ๋ณํ ๊ฐ๋ฅํ๋ฉด ์คํ
data[(step / 10) - 1] = this.convertToInteger(temp); // String temp์ ๊ฐ์ int๋ก ๋ฐ๊ฟ์ ๊ฐ ๋ฐฐ์ด ์๋ฆฌ์ ์ ์ฅ
// (์ฒซ๋ฒ์งธ๊ฐ : data[0], ์ฐ์ฐ์ data[1],๋๋ฒ์งธ
// ๊ฐ data[2]
if (step == 23) { // step์ด 23(์ฐ์ฐ์ ์ ํํ๋ ๋จ๊ณ)์ผ ๊ฒฝ์ฐ,data[1]์ ๊ฐ(์ฐ์ฐ์ ์๋ฆฌ)์ด 1 ~ 4(๋ํ๊ธฐ ~ ๋๋๊ธฐ)๋ฒ์์ ๋ค์ด๊ฐ๋์ง
// ํ์ธ
if (!this.isIntegerRange(data[1], 1, 4)) { // 1<=data[1]<=4๊ฐ ์๋๊ฒฝ์ฐ
data[1] = 0; // ๋ฒ์ ๋ด์ ์์ง ์์ ์ซ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํํํ
message = "\n*** 1 ~ 4 ๋ฒ์๋ด์์ ์ ํํ์ธ์ ***"; // ์ค๋ฅ๋ฉ์ธ์ง๋ฅผ message์ ์ ์ฅ
step = 22; // step 23 -> 22
break; // switch(step) ํ์ถ
} // step์ด 43์ด ์๋๊ฒฝ์ฐ ์ฌ์ฉ์์ ์
๋ ฅ์ ๋ฐ์
}
} else {// String temp์ ๊ฐ์ int๋ก ๋ณํ ๋ถ๊ฐํ๋ฉด ์คํ
message = "\n*** ์ ์๋ก ์
๋ ฅํ์ธ์ ***"; // String message ๊ฐ์ฒด์ ์ค๋ฅ ๋ฉ์ธ์ง ํ ๋น
step -= 1; // 13,23,33,43์๋ step๊ฐ์ -1์ํด์ 12,22,32,42๋ก ๋ฐ๊ฟ -> ์ ๋จ๊ณ๋ก ๋์๊ฐ ์
๋ ฅ์ ๋ค์ ๋ฐ์
break;// switch(step) ํ์ถ
} // String temp์ ๊ฐ์ int๋ก ๋ณํ ๋ถ๊ฐํ๋ฉด ์คํ
} else {// step์ด 43์ธ๊ฒฝ์ฐ(๋ชจ๋ ๊ฐ์ ์
๋ ฅํ์๋) ์ฐ์ฐ ์งํ
if (data[1] == 1) { // data[1]์ ๊ฐ์ด 1์ด๋ฉด data[3]์๋ฆฌ์ (์ฐ์ฐ๊ฒฐ๊ณผ์๋ฆฌ) ์ฒซ๋ฒ์งธ ์ซ์์ ๋๋ฒ์งธ ์ซ์๋ฅผ ๋ํด์ ์ ์ฅ, backend์์
// long์ผ๋ก ์ฐ์ฐํ๋๋ฐ ๋ฐฐ์ด์ intํ์ด๋ฏ๋ก ํ๋ณํํด์ค
data[3] = (int) backend.plus(data[0], data[2]);
} else if (data[1] == 2) { // data[1]์ ๊ฐ์ด 2์ด๋ฉด data[3]์๋ฆฌ์ (์ฐ์ฐ๊ฒฐ๊ณผ์๋ฆฌ) ์ฒซ๋ฒ์งธ ์ซ์์ ๋๋ฒ์งธ ์ซ์๋ฅผ ๋นผ์ ์ ์ฅ
data[3] = (int) backend.minus(data[0], data[2]);
} else if (data[1] == 3) { // ์์ ๋์ผ, ๊ณฑํด์ ์ ์ฅ
data[3] = (int) backend.product(data[0], data[2]);
} else { // ์์ ๋์ผ, ๋๋ ์ ์ ์ฅ (intํ์ด๋ฏ๋ก ์์์ x)
data[3] = (int) backend.divide(data[0], data[2]);
}
}
if (step != 43) // step์ด 43์ด ์๋๊ฒฝ์ฐ (์ฐ์ฐ์ด ๋จ์์ ๊ฒฝ์ฐ)
step += 9; //step์ 9๋ฅผ ๋ํจ (13->22, 23->32, 33->42)
else
loopCheck = false; //step์ด 43์ผ ๊ฒฝ์ฐ(์ฐ์ฐ์ด ๋ค๋๋๋ฉด) loopCheck๋ฅผ false๋ก ๋ฐ๊ฟ -> ๋ฐ๋ณต๋ฌธ 2(loopCheck) ํ์ถ
}
} // ๋ฐ๋ณต๋ฌธ 2(loopCheck)
this.display(" = " + data[3]); // ๋ฑํธ์ ์ฐ์ฐ๊ฒฐ๊ณผ ์ถ๋ ฅ
this.display("\n\n"); // ์ค๋ฐ๊ฟ
boolean subMenu = true;
while (subMenu) { //๋ฐ๋ณต๋ฌธ 3(subMenu) ์์ (์ฐ์ฐ์ด ๋ค๋๋ํ ์คํํ ์ ์์)
this.display(this.makeSubMenu(menu)); //1.์๋ก์ฐ์ฐ 2.์ด์ด์ฐ์ฐ 0.๋๋ด๊ธฐ ์ถ๋ ฅ
if (this.isInteger(temp = this.userInput(scanner))) { // ์ฌ์ฉ์๊ฐ ์ ํํ ๋ฉ๋ด๊ฐ(String)์ temp์ ์ ์ฅํ ์ ์๋ก ๋ณํ ๊ฐ๋ฅํ์ง ํ์ธ(boolean), ์ ์๊ฐ์ด๋ฉด ์คํ
int selectNumber = this.convertToInteger(temp); // ์ฌ์ฉ์๊ฐ ์ ํํ ๋ฉ๋ด๊ฐ(String) temp๋ฅผ int๋ก ๋ณํํด selectMenu์ ์ ์ฅ
if (this.isIntegerRange(selectNumber, 0, menu.length - 2)) { //selectmenu๊ฐ 0๋ถํฐ2์ ๊ฐ์ธ์ง ํ์ธ (1.์๋ก์ฐ์ฐ 2.์ด์ด์ฐ์ฐ 0.๋๋ด๊ธฐ)
subMenu = false;//๋ฐ๋ณต๋ฌธ 3(subMenu) false
if (selectNumber == 1) { //selectMenu ๊ฐ 1์ด๋ฉด (์๋ก์ฐ์ฐ์ด๋ฉด)
for (int dataIdx = 0; dataIdx < data.length; dataIdx++) {
data[dataIdx] = 0; //๋ฐฐ์ด์ ์๋ ๊ฐ์ ๋ชจ๋ 0์ผ๋ก ์ด๊ธฐํ
}
isFormula = false; //์์ ์ถ๋ ฅ์ ์ ์ดํ isFormula๋ฅผ false๋ก ๋ฐ๊ฟ (์ฒซ๋ฒ์งธ ๊ฐ ์
๋ ฅ์ [์์]์ถ๋ ฅ๋์ง ์์)
step = 12; //step์ ๋ค์ 12๋ก, ์ฒ์๋ถํฐ ์คํ
loopCheck = true; // false์๋ loopCheck๋ฅผ true๋ก ๋ฐ๊พธ์ด ๋ค์๋ฐ๋ณต๋ฌธ2๋ฅผ ๋ฐ๋ณตํ ์ ์๋๋กํจ
} else if (selectNumber == 2) {//์ด์ด์ฐ์ฐ์ ์ ํํ๋ฉด
data[0] = data[3]; //์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ์ ์ฒซ๋ฒ์งธ ์ซ์๋ก ๋์
for (int dataIdx = 1; dataIdx < data.length; dataIdx++) {
data[dataIdx] = 0; // ์ฒซ๋ฒ์งธ ์ซ์๋ฅผ ์ ์ธํ ์ฐ์ฐ์, ๋๋ฒ์งธ ์
๋ ฅ๊ฐ, ์ฐ์ฐ๊ฒฐ๊ณผ๋ฅผ 0์ผ๋ก ์ด๊ธฐํ
}
step = 22;//step์ 22๋ก ์ด๊ธฐํ, ์ฒซ๋ฒ์งธ ๊ฐ์ ์
๋ ฅํ๋ ๊ตฌ๊ฐ์ ์ ํ
loopCheck = true; // false์๋ loopCheck๋ฅผ true๋ก ๋ฐ๊พธ์ด ๋ค์๋ฐ๋ณต๋ฌธ2๋ฅผ ๋ฐ๋ณตํ ์ ์๋๋กํจ
} else {
run = false; //๋ฐ๋ณต๋ฌธ1(run)์ ํ์ถํ๊ณ ์ซ์ 1์ controller๋ก ๋ฐํ -> recordIndex๋ฅผ 1๋ก ๋ง๋ค๊ธฐ ์ํจ (๋ฉ์ธ๋ฉ๋ด)
}
} else {//selectmenu๊ฐ 0๋ถํฐ2์ ๊ฐ์ด ์๋๋ฉด (1.์๋ก์ฐ์ฐ 2.์ด์ด์ฐ์ฐ 0.๋๋ด๊ธฐ) ์ค๋ฅ ๋ฉ์ธ์ง ์ถ๋ ฅ
this.display("\n*** 0~2 ๋ฒ์์ ์ซ์๋ก ์
๋ ฅํ์ธ์ ***\n");
}
} else { //์ฌ์ฉ์๊ฐ ์ ํํ ๋ฉ๋ด ๊ฐ์ด ์ ์๊ฐ ์๋๋ฉด ์ค๋ฅ๋ฉ์ธ์ง ์ถ๋ ฅ
this.display("\n*** ์ ์๋ก ์
๋ ฅํ์ธ์ ***\n");
}
}//๋ฐ๋ณต๋ฌธ 3(subMenu)
} // ๋ฐ๋ณต๋ฌธ 1(run)
return 1;
}
/* ์ ํํ ์ฐ์ฐ ๋ฒํธ๋ฅผ ๋ฌธ์๋ก ๋ณํ ํ ๋ฆฌํด */
private String convertToOperator(int operatorNumber) { //int ๊ฐ์ ๋ฐ์์ ์ฐ์ฐ์ ๋ฌธ์์ด๋ก ์ถ๋ ฅ(1์ด๋ฉด +, 2์ด๋ฉด -, 3์ด๋ฉด X, 4๋ฉด /)
String operator = new String();
if (operatorNumber == 1) {
operator = "+";
}
else if(operatorNumber==2) {
operator = "-";
}
else if(operatorNumber==3) {
operator = "X";
}
else if(operatorNumber==4) {
operator = "/";
}
return operator;
}
/* ์ฐ์ฐ์ ์ฌ์ฉํ subTitle */
private String makeSubTitle(String subTitle) { //[ ๋ฉ์ธ(subTitle) ] _________________________________ ์ถ๋ ฅํ๋ ๋ฉ์๋
StringBuffer sb = new StringBuffer();
sb.append("[ ");
sb.append(subTitle);
sb.append(" ] ");
sb.append(" _____________________________\n");
return sb.toString();
}
}
๐ป Back.java
package back;
public class Back {
public Back() {
}
public long plus(long digit1, long digit2) {
return digit1 + digit2;
}
public long minus(long digit1, long digit2) {
return digit1 - digit2;
}
public long product(long digit1, long digit2) {
return digit1 * digit2;
}
public long divide(long digit1, long digit2) {
return digit1 / digit2;
}
}
๐ป ์คํ ๊ฒฐ๊ณผ
Loading...
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ๋ฉ์ธ ] ________________________________________
1. ์ฐ์ฐํ๊ธฐ 0. ๋๋ด๊ธฐ
__________________________________ select : 1
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์ ] _____________________________
3
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ์ฐ์ฐ์๋ฅผ ์ ํํด์ฃผ์ธ์ ] _____________________________
[์์] 3
[์ ํ : 1. ๋ํ๊ธฐ 2. ๋นผ๊ธฐ 3. ๊ณฑํ๊ธฐ 4. ๋๋๊ธฐ] : 3
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์ ] _____________________________
[์์] 3 X7
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ์ฐ์ฐ๊ฒฐ๊ณผ ] _____________________________
3 X 7 = 21
[ ์ฐ์ฐ ] ________________________________________
1. ์๋ก์ด ์ฐ์ฐ 2. ์ด์ด์ ์ฐ์ฐ 0. ์ด์ ํ๋ฉด
__________________________________ select : 2
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ์ฐ์ฐ์๋ฅผ ์ ํํด์ฃผ์ธ์ ] _____________________________
[์์] 21
[์ ํ : 1. ๋ํ๊ธฐ 2. ๋นผ๊ธฐ 3. ๊ณฑํ๊ธฐ 4. ๋๋๊ธฐ] : 2
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ์ซ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์ ] _____________________________
[์์] 21 -4
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ์ฐ์ฐ๊ฒฐ๊ณผ ] _____________________________
21 - 4 = 17
[ ์ฐ์ฐ ] ________________________________________
1. ์๋ก์ด ์ฐ์ฐ 2. ์ด์ด์ ์ฐ์ฐ 0. ์ด์ ํ๋ฉด
__________________________________ select : 0
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ ๋ฉ์ธ ] ________________________________________
1. ์ฐ์ฐํ๊ธฐ 0. ๋๋ด๊ธฐ
__________________________________ select : 0
****************************************************
JS Framework Calculator v1.0
Designed By Lee Yerim
****************************************************
[ EXIT ] ______________________________________
ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.~
________________________________________________
Closing...
๐ก ์๊ณ ๋ฆฌ์ฆ + ํ๋ก์ธ์ค ๊ฐ์ด ํ๋ฉด ๋ณต์กํด์ง
ํ๋ก์ธ์ค ๋จผ์ ์ค๊ณ ํ๊ธฐ -> ์๊ณ ๋ฆฌ์ฆ : ์ข ๋ ์์
๐ก false๋ true๋ฅผ ๊ฐ์ ๊ณต๊ฐ์ ์ ์ฅํ ๋ ์ผํญ์ฐ์ฐ์ ์ฌ์ฉ
๋ฐ์ํ