XHAENEUNG 오류 관련 질문입니다.

  • k31265451
    k31265451

    import java.util.HashMap;
    import java.util.Scanner;

    public class Xhaeneing {

    static int calculate(int a, int b, String oper) {
    
        int result=0;
        switch (oper) {
        case "+":
            result = a+b;
            break;
        case "-":
            result = a-b;
            break;
        case "*":
            result = a*b;
            break;
    
        default:
            break;
        }
        return result;
    }
    
    static int stringToInt(String a, String b, String oper) {
        int x=0;
        int y=0;
    
        if(a.equals("zero"))
            x=0;
        if(a.equals("one"))
            x=1;
        if(a.equals("two"))
            x=2;
        if(a.equals("three"))
            x=3;
        if(a.equals("four"))
            x=4;
        if(a.equals("five"))
            x=5;
        if(a.equals("six"))
            x=6;
        if(a.equals("seven"))
            x=7;
        if(a.equals("eight"))
            x=8;
        if(a.equals("nine"))
            x=9;
        if(a.equals("ten"))
            x=10;
    
        if(b.equals("zero"))
            y=0;
        if(b.equals("one"))
            y=1;
        if(b.equals("two"))
            y=2;
        if(b.equals("three"))
            y=3;
        if(b.equals("four"))
            y=4;
        if(b.equals("five"))
            y=5;
        if(b.equals("six"))
            y=6;
        if(b.equals("seven"))
            y=7;
        if(b.equals("eight"))
            y=8;
        if(b.equals("nine"))
            y=9;
        if(b.equals("ten"))
            y=10;
    
        return calculate(x,y,oper);
    
    }
    
    static String intToString(int a) {
        String x=null;
    
        if(a==0)
            x="zero";
        if(a==1)
            x="one";
        if(a==2)
            x="two";
        if(a==3)
            x="three";
        if(a==4)
            x="four";
        if(a==5)
            x="five";
        if(a==6)
            x="six";
        if(a==7)
            x="seven";
        if(a==8)
            x="eight";
        if(a==9)
            x="nine";
        if(a==10)
            x="ten";
    
        return x;
    }
    
    static boolean sort(String result, String answer) {
        /////////////////reedff  erdeff
        HashMap<Character, Integer> hash = new HashMap<Character, Integer>();
        HashMap<Character, Integer> hash2 = new HashMap<Character, Integer>();

    // System.out.println("result = "+result.length() +" answer = "+answer.length());
    if(result.length() == answer.length()){
    for(int x=0;x<result.length();x++){

    if(hash.get(result.charAt(x)) == null){
                    hash.put(result.charAt(x), 1);
                }
                else if(hash.get(result.charAt(x)) != null)
                    hash.put(result.charAt(x), hash.get(result.charAt(x))+1);
    
                if(hash2.get(answer.charAt(x)) == null){
                    hash2.put(answer.charAt(x), 1);
                }
                else if(hash2.get(answer.charAt(x)) != null)
                    hash2.put(answer.charAt(x), hash2.get(answer.charAt(x))+1);
            }
            return hash.equals(hash2);
        }
        else
            return false;
    
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int a=0;
        boolean[] flag = new boolean[num];
    
        while(a<num){
            String arr1 = sc.next();
            String oper = sc.next();
            String arr2 = sc.next();
            sc.next();
            String ans = sc.next();
    
            int result1 = stringToInt(arr1, arr2, oper);
            String result2 = intToString(result1);
    
            flag[a] = sort(result2, ans);
    
            a++;
        }
        for(boolean out:flag){
            if(out==true)
                System.out.println("Yes");
            else
                System.out.println("No");
        }
    }

    }

    먼저 이클립스에서는 실행이 되는데 여기서는 런타임 오류가 나네요ㅜㅜ어떠한 부분에서 오류가 나는지 궁금합니다.

    두번째로 구조적으로 문제가 있는지 그리고 더 좋은 로직을 짤려면 어떠한 방식으로 접근하는지가 좋은지 궁금합니다.
    그럼 수고하세요:)


    9년 전
1개의 댓글이 있습니다.
  • WeissBlume
    WeissBlume

    1
    one - ten = nine
    이 경우에 NullPointerException이 일어날 것으로 보입니다.


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