lecture 문제 질문이요...

  • mkultra1008
    mkultra1008

    import java.util.Scanner;

    class Main
    {
    private static Scanner sc;

    public static void main(String[] args)
    {
        sc = new Scanner(System.in);
    
        int choice=sc.nextInt();
    
        for(int i=0; i<choice; i++)
        {
            StringBuilder str=new StringBuilder(sc.nextLine());;
            if((str.length()%2==0)&&(str.length()<=1000))
                arange(str);
        }
    }
    
    public static void arange(StringBuilder str)
    {
        StringBuilder[] str1=new StringBuilder[999];
        StringBuilder[] tempStr=new StringBuilder[1];
    
        for(int i=0, j=0; i<str.length(); i+=2, j++)
            {str1[j]=new StringBuilder().append(str.charAt(i)).append(str.charAt(i+1));
            }
        for(int i=0; i<str1.length-1; i++ )
        {
            for(int j=0; j<str1.length-1-i; j++)
            {
                if((str1[j].codePointAt(0))>str1[j+1].codePointAt(0))
                {
                    tempStr[1]=str1[j];
                    str1[j]=str1[j+1];
                    str1[j+1]=tempStr[1];
                }
                else if((str1[j].codePointAt(0))==str1[j+1].codePointAt(0))
                {
                    if((str1[j].codePointAt(1))>str1[j+1].codePointAt(1))
                    {
                        tempStr[1]=str1[j];
                        str1[j]=str1[j+1];
                        str1[j+1]=tempStr[1];
                    }
                }
            }   
        }
    }

    }

    위는 본 문제의 코드구요.
    에러메세지가 뜨네요...

    1. (5)줄을 메인 메소드 안에서 사용하면 오류가 발생하는데 대체 왜 이러는 건가요. 본래 Scanner sc=new scanner(System.in);의 형태로
      메인 메소드 안에 있었습니다. 이클립스가 저렇게 바꾸어주었는데
      대체 왜 바꾼건가요??

    2. Exception in thread "main" java.lang.NullPointerException
      at Main.arange(HelloWorld.java:33)
      at Main.main(HelloWorld.java:17)
      라고 되어있는데 33부분을 따로 돌려봤더니 문제는 딱히 없었습니다.
      본 에러 메세지의 의미가 뭘까요..?

    3. 입문한지 얼마 안돼서 api에서 이것저것 가져와서 떡칠했는데...
      더 좋은 방법 있을까요..

    4. 구조적으로나 설계적으로 문제가 있다면 지적 부탁드립니다.

    감사합니다.


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