이 문제로 얼마 동안 작업 한 후, 필요한 부분에 대해 Regex 구문을 알아 내는데 어려움이 있습니다.Java split을 사용하여 수학 표현식을 계산하십시오.
자바 강의에서는 표현식 문자열 (괄호의 유무에 관계없이)을 사용하고 올바르게 평가할 수있는 계산기를 작성하는 작업이 주어졌습니다.
식의 구문 분석 뒤에 개념은 당신이 문자열을 가지고있다...
5+16/20-56+7-20*16/9
그리고 당신은 '분리'를 통해 두 ArrayLists를 얻으려면 :
{5,16,20,56,7,20,16,9}
{+,/,-,+,-,*,/}
그런 다음 작업 우선 순위 순으로 작업을 조각 단위로 수행하고 ArrayList에서 숫자 배열 ha까지 작업을 비 웁니다 하나의 요소 : 최종 결과.
불행히도 Regex
에 대한 경험이 없으므로 의 의미는 내가 읽고있는 자습서 및 예제의을 의미하지 않습니다.
나는 "[*-/+]"
에 따라 분할하는 방법을 알아낼 수 없습니다, 나는가 아니라 단순한 숫자보다는 분할 전체 숫자을 선택하는 방법을 알아낼 수 없습니다. 이러한 오류 때문에 컴파일 할 코드를 가져올 수 없습니다. 코드의 하나의 작업 조각이 나는 거지 :
[Ljava.lang.String;@308ab721
에서
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Tester
{
public static void main(String[] args)
{
String expression = "3+5+6-10*20/150-14+76%2";
// String[] operands = expression.split("");
String[] operators = expression.split("[0-9]");
// System.out.println(operands);
System.out.println(operators);
}
}
결과 그리고 그 출처 아무 생각이 없습니다.
누구든지 내가 뭘 잘못하고 있는지 알아낼 수 있습니까? 또는 Regex에서 초보자 용 강의을 매우 잘 가리 킵니까?
모두에게 감사드립니다.
무해하기는하지만 첫 번째 패턴의 백 슬래시는 필요하지 않습니다. – ajb
좋습니다. 수정했습니다. 하지만 그 좋은 연습은 정규 표현식 (begginner)에 대한 이스케이프 문자를 포함합니다. 이후 어떤 경우에는 그것은 필수입니다. 'replaceAll()'예 : – Baby
죄송합니다.'-' 앞에 \\가 필요하므로 범위로 취급하지 않습니다. 나는 좋은 하루 보내지 않고있다. 잘못된 정보를 유감스럽게 생각합니다. – ajb