RTE (nonzero return code) 이건 뭐가문제라는건가요...ㅜㅜ

  • zeallat
    zeallat

    분명히 이클립스로 돌릴때엔 예제를 잘 해결해내는데 뭐가문제일까요...

    문제는 백년전쟁입니다

    import java.util.LinkedList;
    import java.util.Scanner;

    public class Main
    {
    static Scanner keyboard = new Scanner(System.in);
    static LinkedList france=new LinkedList();
    static LinkedList england=new LinkedList();
    static LinkedList input=new LinkedList();
    static LinkedList answer = new LinkedList();
    public static void main(String[] args)
    {

    int T=keyboard.nextInt();
        for(int j=0;j<T;j++)
        {
            int N=keyboard.nextInt();int Q=keyboard.nextInt();
            Data temp;
            for(int k=0;k<N-2;k++)//한배열에 전부 입력
            {
                temp = new Data(keyboard.nextInt(),keyboard.nextInt());
                input.add(temp);
            }
            //일단국왕을색출해서 첫째라인 배정
            //지금부터 팀배정
            franceOperation(1);
            englandOperation(2);//팀배정완료
    
    
    
    
            for(int w=0;w<Q;w++)
            {
                //keyboard.nextLine();
                char choice = keyboard.next().charAt(0);
    
                if(choice=='T')
                {
                    int tNum = keyboard.nextInt();
                    tOperation(tNum);
                }
                else if(choice=='Q')
                {
                    int qNum1 = keyboard.nextInt();
                    int qNum2 = keyboard.nextInt();
                    qOperation(qNum1,qNum2);
                }
    
            }
            printAnswer();
    
    
    
    
    
        }
    
    
    
    
    }
    
    
    
    public static void printAnswer()
    {
        for(int i=0;i<answer.size();i++)
        {
            System.out.println(answer.get(i));
        }
    }
    
    public static void qOperation(int qNum1, int qNum2)
    {
        int qNum1Team = 0; int qNum2Team=0;
        for(int i=0;i<england.size();i++)
        {
            if(england.get(i).num==qNum1)
            {
                qNum1Team = england.get(i).team;
            }
            else if(england.get(i).num==qNum2)
            {
                qNum2Team = england.get(i).team;
            }
        }
        for(int i=0;i<france.size();i++)
        {
            if(france.get(i).num==qNum1)
            {
                qNum1Team = france.get(i).team;
            }
            else if(france.get(i).num==qNum2)
            {
                qNum2Team = france.get(i).team;
            }
        }
        if(qNum1==1||qNum1==2)
        {
            qNum1Team=qNum1;
        }
        if(qNum2==1||qNum2==2)
        {
            qNum2Team=qNum2;
        }
    
        if(qNum1Team==qNum2Team)
        {
            answer.add("Ally");
        }
        else
        {
            answer.add("Enemy");
        }
    }
    
    public static void tOperation(int tNum)
    {
        for(int i=0;i<england.size();i++)
        {
            if(england.get(i).num==tNum)
            {
                englandBasicBetray(tNum);
                englandBetray(tNum);
    
                return;
            }
        }
        for(int i=0;i<france.size();i++)
        {
            if(france.get(i).num==tNum)
            {
                franceBasicBetray(tNum);
                franceBetray(tNum);
                return;
            }
        }
    }
    
    public static void englandBasicBetray(int num)//넘겨받은 정수를 신하로 하는 것 뒤집기
    {
        int index = 0;
    
            for(int i=0;i<england.size();i++)
            {
                if(england.get(i).num==num)
                {
                    index=i;
                    if(england.get(index).team==1)
                    {
                        england.get(index).team=2;
                    }
                    else if(england.get(index).team==2)
                    {
                        england.get(index).team=1;
                    }
    
                }
    
            }
    
    }
    
    public static void englandBetray(int num)//넘겨받은 정수를 보스로하는 신하들 뒤집기
    {
        int index = 0;
        while(true)
        {
            for(int i=0;i<england.size();i++)
            {
                if(england.get(i).boss==num)
                {
                    index=i;
                    if(england.get(index).team==1)
                    {
                        england.get(index).team=2;
                    }
                    else if(england.get(index).team==2)
                    {
                        england.get(index).team=1;
                    }
                    englandBetray(england.get(index).num);
    
                }
                if(i+1==england.size())//탈출조건
                {
                    return;
                }
            }
            return;
    
    
        }
    }
    
    public static void franceBasicBetray(int num)//넘겨받은 정수를 신하로 하는 것 뒤집기
    {
        int index = 0;
    
            for(int i=0;i<france.size();i++)
            {
                if(france.get(i).num==num)
                {
                    index=i;
                    if(france.get(index).team==1)
                    {
                        france.get(index).team=2;
                    }
                    else if(france.get(index).team==2)
                    {
                        france.get(index).team=1;
                    }
    
                }
    
            }
    
    }
    
    public static void franceBetray(int num)//넘겨받은 정수를 보스로하는 신하들 뒤집기
    {
        int index = 0;
        while(true)
        {
            for(int i=0;i<france.size();i++)
            {
                if(france.get(i).boss==num)
                {
                    index=i;
                    if(france.get(index).team==1)
                    {
                        france.get(index).team=2;
                    }
                    else if(france.get(index).team==2)
                    {
                        france.get(index).team=1;
                    }
                    franceBetray(france.get(index).num);
    
                }
                if(i+1==france.size())//탈출조건
                {
                    return;
                }
            }
            return;
    
    
        }
    }
    
    public static void franceOperation(int num)/*주군번호*/
    //프랑스팀 만들기 재귀함수
    {
        int index = 0;
        while(true)
        {
            for(int i=0;i<input.size();i++)
            {
                if(input.get(i).boss==num)
                {
                    index=i;
                    break;
                }
                if(i+1==input.size())//탈출조건
                {
                    return;
                }
            }
            france.add(input.get(index));
            france.getLast().team = 1;
            input.remove(index);
            franceOperation(france.getLast().num);
        }
    }
    
    public static void englandOperation(int num)/*주군번호*/
    //영국팀 만들기 재귀함수
    {
        int index = 0;
        while(true)
        {
            for(int i=0;i<input.size();i++)
            {
                if(input.get(i).boss==num)
                {
                    index=i;
                    break;
                }
                if(i+1==input.size())//탈출조건
                {
                    return;
                }
            }
            england.add(input.get(index));
            england.getLast().team = 2;
            input.remove(index);
            if(input.size()==0)
                return;
            englandOperation(england.getLast().num);
        }
    }

    }

    class Data
    {
    int boss;//주군번호
    int num;//신하번호
    int team;//1은 프랑스 2는 영국
    Data(int boss, int num)
    {
    this.num=num;
    this.boss=boss;
    }

    Data(int boss)
    {
        this.boss = boss;
    }

    }


    10년 전
2개의 댓글이 있습니다.
  • Being
    Being

    프로그램이 비정상 종료되었다는 뜻입니다. 도움을문제를 어떻게 해결하고자 하셨는지에 대한 설명과 글쓰기 문법을 참고하여 소스 코드를 보기 좋게 하는 등 질문하는 성의를 보여 주시면 다른 분들께서 도움 주실 수 있을 것 같습니다.


    10년 전 link
  • zeallat
    zeallat

    네ㅠㅠ 이클립스돌릴땐에러전부고쳤는데... 알겠습니당


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