안녕하세요! URI Decoding 문제 질문 드립니다.

  • tjtjdgur34
    tjtjdgur34

    이 알고리즘 말고 다른 방법으로 문제를 해결하긴하였지만, 질문이 있어서 올립니다. 이 코드를 제출하게되면 계속해서 런타임 오류가 발생하더라고요. 혹시 왜 그런지 알 수 있을까요?

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int time = scan.nextInt();
            scan.nextLine();
    
            for (int t = 0; t < time; t++) {
                String input = new String();
                input = scan.nextLine();
                String[] array;
                String output = new String();
                array = input.split("%");
    
                for (int i = 0; i < array.length; i++) {
                    array[i] = array[i].replaceAll("20", " ");
                    array[i] = array[i].replaceAll("21", "!");
                    array[i] = array[i].replaceAll("24", "$");
                    array[i] = array[i].replaceAll("25", "%");
                    array[i] = array[i].replaceAll("28", "(");
                    array[i] = array[i].replaceAll("29", ")");
                    array[i] = array[i].replaceAll("2a", "*");
                    output += array[i];
                }
    
                System.out.println(output);
            }
        }
    
    }
    

    7년 전
2개의 댓글이 있습니다.
  • Corea
    Corea

    http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

    위 링크를 살펴보시면 replaceAll 메소드에서 두 번째 인자로 $ 혹은 \이 들어가는 경우에는 특별하게 처리됩니다. 첫 번째 인자로 정규식을 받기때문에 정규식과 관련한 처리가 될 것 같네요. 그래서 array[i] = array[i].replaceAll("24", "$"); 부분이 정상적으로 실행되지 않는 듯 합니다.


    7년 전 link
  • tjtjdgur34
    tjtjdgur34

    감사합니다!!!


    7년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.