Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   помогите изменить метод в программе (http://forum.oszone.net/showthread.php?t=246577)

kirill7117 09-11-2012 15:49 2022354

помогите изменить метод в программе
 
кто-нибудь может помочь немного модифицировать public static Answer1 parseTree (String s). Программа правильно работает, только нужно этот метод по-другому написать
http://rusfolder.com/33533509

ferget 09-11-2012 16:16 2022383

Все Answer1 замените на Answer, а в одном месте заменить не получится потому-что Answer1 это название класса

kirill7117 10-11-2012 12:27 2022796

ferget, это то я знаю, я специально сделал Answer1, мне бы изменить то, что внутри метода

ferget 10-11-2012 17:42 2022940

Цитата:

Цитата kirill7117
мне бы изменить то, что внутри метода »

Что значит "внутри метода"? В первом посте вы хотели изменить возвращаемое значение

kirill7117 10-11-2012 19:21 2023011

ferget, я просто неправильно написал, теперь я исправил первый пост

ferget 10-11-2012 20:45 2023063

не совсем понятно, что значит не много
ну например так

Код:

import java.util.*;

public class Answer1 {

        private String name;
        private Answer1 firstChild;
        private Answer1 nextSibling;

        Answer1(String n, Answer1 d, Answer1 r) {
                name = n;
                firstChild = d;
                nextSibling = r;
        }

        public static Answer1 parseTree(String s) {
                if (s == null || s.isEmpty()) {
                        return null;
                }

                StringTokenizer mingi = new StringTokenizer(s, ",()", true);
                String midagi = mingi.nextToken();
                String Q = "", E = "", V = "";

                while (mingi.hasMoreTokens()) {
                        Q = mingi.nextToken();
                        if (Q.equals("(")) {
                                Q = mingi.nextToken();
                                int closed = 0;
                                while (closed < 1) {
                                        E = E + Q;
                                        Q = mingi.nextToken();
                                        closed = findBrackets(Q, closed);
                                }
                        }
                        if (Q.equals(",")) {
                                while (mingi.hasMoreTokens()) {
                                        V = V + mingi.nextToken();
                                }
                        }
                }
                return new Answer1(midagi, Answer1.parseTree(E), Answer1.parseTree(V));
        }

        private static int findBrackets(String str, int num) {
                if (str.equals("(")) {
                        return num - 1;
                } else if (str.equals(")")) {
                        return num + 1;
                }
                return num;
        }

        public String rightParentheticRepresentation() {
                String Returned = "";
                if (firstChild != null) {
                        Returned += "(" + firstChild.rightParentheticRepresentation() + ")";
                }
                Returned += name;
                if (nextSibling != null) {
                        Returned += "," + nextSibling.rightParentheticRepresentation();
                }
                return Returned;
        }

        public static void main(String[] param) {
                String s = "A(B,C)";
                Answer1 t = Answer1.parseTree(s);
                String v = t.rightParentheticRepresentation();
                System.out.println(s + " ==> " + v); // A(B,C) ==> (B,C)A
                s = "A(C,B)";
                String Dam = "";
                Dam = s + " ==> "
                                + (Answer1.parseTree(s).rightParentheticRepresentation());
                int passedOf3 = 0;
                if (Dam.equals(s + " ==> " + "(C,B)A")) {
                        passedOf3++;
                        System.out.println("Test 1 OK!");
                }
                s = "B(D(C,H),B(W,M))";
                Dam = s + " ==> "
                                + (Answer1.parseTree(s).rightParentheticRepresentation());
                if (Dam.equals(s + " ==> " + "((C,H)D,(W,M)B)B")) {
                        passedOf3++;
                        System.out.println("Test 2 OK!");
                }
                s = "C(I(K,E(A,F)),Y(B,O))";
                Dam = s + " ==> "
                                + (Answer1.parseTree(s).rightParentheticRepresentation());
                if (Dam.equals(s + " ==> " + "((K,(A,F)E)I,(B,O)Y)C")) {
                        passedOf3++;
                        System.out.println("Test 3 OK!");
                }
                if (passedOf3 == 3) {
                        System.out.println("All tests passed!");
                } else
                        System.out.println("Error, some tests failed.");
        }
}


kirill7117 11-11-2012 16:24 2023516

ferget, спасибо


Время: 22:36.

Время: 22:36.
© OSzone.net 2001-