-1

我有一些我想弄清楚的事情。所以当我运行这个方法时,调用:

公共字符串显示列表()

我希望它返回字符串,但之后调用了一个名为 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

4 回答 4

2

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

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

一种方法如下:

在与您的方法相同的类中,包括以下内容:

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();
        }
    }
}

印刷:

富吧

于 2013-11-09T06:00:31.507 回答
1

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

于 2013-11-09T05:19:26.123 回答
1

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

doSomething(){

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

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

} 
于 2013-11-09T05:24:58.773 回答
1

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

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

@DarkKnight 和 @ManZzup 已经提出了替代方案;你需要重组你的代码,这样就不需要这样的结构了。

于 2013-11-09T05:30:15.157 回答