2017-04-13 6 views
2

JavaFx를 사용하여 다음 응용 프로그램을 프로그래밍하고 싶습니다.산술 연산자 저장 및 사용

이 프로그램은 사용자가 해결해야하는 수학 작업을 생성합니다. 체크 박스를 사용하면 어떤 연산자 (+ - * /)가 발생할지 결정할 수 있습니다. 4 개의 옵션을 모두 선택하면 모든 운영자를 한 번 사용해야합니다. 그래서 출력은 다음과 같이 될 것입니다 :

4 + 3-2 * 2분의 1

내 문제는 내가 선택한 연산자를 저장할 수있는 방법에 대해 아무 생각이 없다는 것을 나는 나중에에 삽입 할 수 있습니다 방법입니다 최종적으로 프로그램은 사용자 솔루션을 컴퓨터의 계산 된 솔루션과 비교해야하기 때문에 char 또는 string이 아닌 작동중인 운영자로 프로그램을 작성해야합니다.

당신의 도움과 제안에 감사드립니다. 저는 누군가가 이것을 도와 줄 수 있기를 바랍니다.

+1

표현식을 표현하고 평가하기 위해 어떤 종류의 객체 모델을 만들어야합니다. 이것은 특정 서브 클래스 (또는 아마도'evaluate (double, double)'메소드 또는 유사 연산자를 가진'Operator' enum)를 가진 추상'Operator' 클래스를 포함 할 것입니다. 그런 다음 스스로를 평가할 수있는 표현식 객체를 생성합니다. 당신은 정말로 너무 광범위합니다. 완전한 대답은 몇 페이지가 될 것입니다. –

답변

0

당신은 ArithmeticOperator.values()를 검사하여 사용하여 확인할 수 있습니다 예를 들어

public enum ArithmeticOperator implements BiFunction<Double, Double, Double> { 
    PLUS("+", (a, b) -> a + b), 
    MINUS("-", (a, b) -> a - b), 
    MULTIPLY("*", (a, b) -> a * b), 
    DIVIDE("/", (a, b) -> a/b); 

    private final String symbol; 
    private final BiFunction<Double, Double, Double> operation; 

    ArithmeticOperator(String symbol, BiFunction<Double, Double, Double> operation) { 
     this.symbol = symbol; 
     this.operation = operation; 
    } 

    public Double apply (Double a, Double b) { 
     return operation.apply(a, b); 
    } 

    public String toString() { 
     return symbol; 
    } 
} 

, enum 정의합니다.

+0

답변 해 주셔서 감사합니다. 당신이 작성한 코드를 조금 설명해 주시겠습니까? 전에 enum과 BiFunction에서 일한 적이 없으므로 이해가 안됩니다. – wenzel267

+0

BiFunction 인터페이스는 Java 8에서 도입되었습니다.이 인터페이스에는 두 개의 인수를 취하여 뭔가를 반환하는 1 개의 메소드가 있습니다. '->'에 관한 이상한 구문은 (Java 8) 람다입니다. 열거 형은 영원히 계속되었으며 정확한 수의 인스턴스가있는 클래스입니다. Google은이 약관을 준수합니다. 그것은 코멘트에 너무 많이 다루고 있습니다. – Bohemian

0

String 또는 Chars를 사용하여 연산자를 저장 한 다음 switch 문을 사용하여 어떤 연산자 또는 심지어 If Else을 정의 할 수 있습니다.

그런 프로젝트가 있지만 아이디어를 내기 위해 C#을 사용하여 개발했습니다.

https://www.codeproject.com/Articles/88435/Simple-Guide-to-Mathematical-Expression-Parsing

+0

표현식이 응용 프로그램에서 생성되는 것처럼 들리므로 구문 분석 할 필요가 없습니다. –

0

모두 당신이해야 할 경우 몇 가지 문이 있고 당신은 어떤 번호를 생성해야합니다. 프로그램은이를 반복하고 연산자를 검사하며 둘 이상의 연산자가있는 경우 연산 순서를 확인합니다 (곱셈을 나눈 다음 빼기 및 더하기). 그런 다음 프로그램이 입력을 체크인합니다.