在返回字符串后,从String方法调用另一个方法

时间:2013-11-09 05:18:02

标签: java string methods

我有一些我想弄明白的东西。所以当我运行这个名为:

的方法时

public String showList()

我希望它返回字符串,但之后调用一个名为displayMenu的方法,因此在调用showList时它会自动转到下一个方法。这可能吗?

showList方法:(我想调用另一个名为public void displayMenu()的方法)

public String showList()
    {
        sortList();

            int i = 0;
            String retStr = "The nodes in the list are:\n";
            LinkedListNode current = front;
            while(current != null){
                i++;
                retStr += "Node " + i + " is: " + current.getData() + "\n";
                current = current.getNext();
            }
            return retStr;
                //Would like to call the displayMenu() here, but I can't after the string returns it is unreachable.

        }

4 个答案:

答案 0 :(得分:2)

注意:我不建议这样做。我绝对建议您在某些控制器类中一个接一个地调用这些方法。现在已经完成了:

使用Thread这是一个相当复杂的方法,尚未提及。我一般不会这样做,但值得注意的是,它可以做到。请注意,这是处理线程(请参阅tutorial),因此我不保证该方法将在返回后进行评估。

这样做的一种方法如下:

在与您的方法相同的类中包含如下内容:

class doSomething implements Runnable{
    public void run(){
        displayMenu();
    }
}

然后,在您的showList方法中,执行以下操作:

public String showList(){
    ...//some code
    (new Thread(new doSomething())).start(); //more efficient: create a 
                                             //variable to hold the thread.
    return retStr;
}

示例代码:

public class test{
    public static void main(String[]a){
        System.out.print(foo());
    }

    public static String foo(){
        (new Thread(new fooBar())).start();
        return "foo";
    }
    public static void bar(){
        System.out.println("bar");
    }

    static class fooBar implements Runnable{
        public void run(){
            bar();
        }
    }
}

打印:

  

foobar的

答案 1 :(得分:1)

你不能在return语句后写任何东西。 Return语句应该是方法的最后一行。

答案 2 :(得分:1)

修改调用showList()的方法,如下所示。我们称此方法为doSomething()

doSomething(){

 String output=showList(..); // This is your existing method call

 displayMenu();      // call displaymenu() once showlist() execution is over

} 

答案 3 :(得分:1)

关于return语句的问题是,当你使用它时,你基本上就是说“我想立即返回这个值”。不在5行,不是在另一个函数调用之后。 立即

因此,在返回值后想要在方法中做某事是没有意义的;你已经基本上表明没有什么可做的;你已经完成并准备回到调用方法。

@DarkKnight和@ManZzup已经提出了替代方案;您需要重新构建代码,以便不需要这样的构造。