Pi java 답안 런타임 에러 질문 (Nonzero return code)

  • mewards
    mewards

    nonzero return code 런타임 에러가 뜨는데 eclipse에서는 경고도 뜨지 않아서 어떻게 해결해야 할지 막막하네요 ㅜ
    답변 부탁드립니다.

    PI

    package pi;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            ArrayList<String> num = new ArrayList<>();
            int cases = sc.nextInt();
            while (cases-- > 0) {
                String input = sc.next();
                num.add(input);
            }
            // int numInt = Integer.parseInt(num);
            for (int i = 0; i < num.size(); i++) {
                String now = num.get(i);
                int sum = 0;
                while (now.isEmpty() != true) {
                    int three = 11, four = 11, five = 11;
                    if (now.length() > 5) {
                        three = chk(now.substring(0, 3));
                        four = chk(now.substring(0, 4));
                        five = chk(now.substring(0, 5));
                    } else if (now.length() == 4) {
                        four = chk(now.substring(0, 4));
                    } else {
                        three = chk(now.substring(0, 3));
                    }
                    if (five > four) {
                        if (four > three) {
                            now = now.substring(3);
                            sum += three;
                        } else {
                            now = now.substring(4);
                            sum += four;
                        }
                    } else if (five == four) {
                        if (four > three) {
                            now = now.substring(3);
                            sum += three;
                        } else {
                            now = now.substring(5);
                            sum += five;
                        }
                    } else {
                        if (three < five) {
                            now = now.substring(3);
                            sum += three;
                        } else {
                            now = now.substring(5);
                            sum += five;
                        }
                    }
                }
                System.out.println(sum);
            }
            sc.close();
        }
    
        static public int chk(String str) {
            ArrayList<Integer> arr = new ArrayList<>();
            for (int i = 0; i < str.length(); i++) {
                int each = Integer.parseInt(str.substring(i, i + 1));
                arr.add(each);
            }
            int diff = arr.get(1) - arr.get(0);
            if (diff == 0) {
                for (int i = 2; i < arr.size(); i++) { // 11111
                    if (arr.get(i - 1) == arr.get(i)) {
                        if (i == arr.size() - 1)
                            return 1;
                        else
                            continue;
                    } else
                        return 10;
                }
            } else {
                if (arr.get(0) == arr.get(2)) {
                    if (arr.size() == 5) {
                        if (arr.get(0) == arr.get(4) && arr.get(1) == arr.get(3))
                            return 4;
                        else
                            return 10;
                    } else if (arr.size() == 4) {
                        if (arr.get(1) == arr.get(3))
                            return 4;
                        else
                            return 10;
                    } else {
                        return 4;
                    }
                } else {
                    if (arr.get(1) - arr.get(0) == arr.get(2) - arr.get(1)) {
                        if (diff == 1 || diff == -1) {
                            if (arr.size() == 5) {
                                if (arr.get(3) - arr.get(2) == diff
                                        && arr.get(4) - arr.get(3) == diff)
                                    return 2;
                                else
                                    return 10;
                            } else if (arr.size() == 4) {
                                if (arr.get(3) - arr.get(2) == diff)
                                    return 2;
                                else
                                    return 10;
                            } else {
                                return 2;
                            }
                        } else {
                            if (arr.size() == 5) {
                                if (arr.get(3) - arr.get(2) == diff
                                        && arr.get(4) - arr.get(3) == diff)
                                    return 5;
                                else
                                    return 10;
                            } else if (arr.size() == 4) {
                                if (arr.get(3) - arr.get(2) == diff)
                                    return 5;
                                else
                                    return 10;
                            } else {
                                return 5;
                            }
                        }
                    }
                }
            }
            return 0;
        }
    }

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

    다른 분들이 올리신 질문글과 글 작성시 표시되는 도움말을 참고하여 글을 가다듬어 주시기를 부탁드립니다.


    10년 전 link
  • mewards
    mewards

    메인 함수 외에 함수에서 리턴값을 가지면 런타임 에러가 발생하는 것 같아요 맞나요?


    10년 전 link
  • Being
    Being

    아니오, package 구문이 문제입니다. 항상 Main으로 이름붙은 패키지 없는 클래스에 main 메소드가 존재해야 합니다.


    10년 전 link
  • mewards
    mewards

    저 코드에서 package 구문을 제거해도 똑같은 에러가 뜨네요 ㅠㅠ


    10년 전 link
  • Being
    Being

    0000000000 같은 입력에서 실패합니다. 확인해 보시겠어요? :)


    10년 전 link
  • mewards
    mewards

    if (now.length() >= 5) 로 등호 추가해서 확인했습니다.
    그래도 똑같이 runtime error뜨네요 ㅠㅠ


    10년 전 link
  • Being
    Being

    그 부분의 부등호만 수정하면 과연 문제가 해결될까요? 한번 고민해 보시기 바랍니다.


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