반응형

[Error Note][Java] Dangling meta character '+' near index 0+ 

애러코드

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 +

찾은 경위

백준 1541번 문제 잃어버린 괄호 풀이 중 아래 코드에서 에러 발생

String[] temp = orderOfCalculationString[i].split("+");

해결 방법

+ 앞에 \\ 추가 (* 와 ^로 나눌 때에도 동일 방법으로 해결)

String[] temp = orderOfCalculationString[i].split("\\+");

문자열을 +, *, ^ 로 split할 때에는 "\\+" 의 형식으로 입력해야한다. 이는 앞의 세 문자가 특별한 의미로 쓰이기 때문이다.

참고로 split함수는  regex 표현식을 사용한다.

regex문서로 이동하기

전체  코드

package greedy;

//import java.util.Arrays;
import java.util.Scanner;

public class B1541 {
	
	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		
		String input = scan.next();
		
		String [] orderOfCalculationString = input.split("-");
		int [] orderOfCalculationInt = new int [orderOfCalculationString.length];
		
//		System.out.println(input);
//		System.out.println(Arrays.toString(orderOfCalculationString));
		
		for (int i = 0; i < orderOfCalculationString.length; i++) {
			String[] temp = orderOfCalculationString[i].split("\\+");
			int sum = 0;
			for (int j = 0; j < temp.length; j++) {
				sum += Integer.parseInt(temp[j]);
			}
			orderOfCalculationInt[i] = sum;
		}

		int result = orderOfCalculationInt[0];
		for (int i = 1; i < orderOfCalculationInt.length; i++) {
			result -= orderOfCalculationInt[i];
		}
		System.out.println(result);
		
		scan.close();
		
	}

}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기