我正在尝试运行以下java程序。但它没有显示任何输出。
class Player implements Runnable{
Thread t = new Thread();
public Player(String name) {
t.setName(name);
t.start();
}
@Override
public void run() {
System.out.println(t.getName() + "starts the race.");
for(int i = 0; i<3; i++)
{
System.out.println(t.getName() + " crossed " + i + " obstacle.");
}
System.out.println(t.getName() + " finishes the race.");
}
}
class Competition {
public static void main(String[] args){
Player player1 = new Player("Cercei");
Player player2 = new Player("Jamie");
Player player3 = new Player("Tyrion");
}
}
我受到两项限制。
1.请勿编辑竞赛类。
2.玩家类中不允许添加任何变量。只添加必要的方法。
输出可能如下所示:
杰米开始比赛。赛尔西开始比赛。提利昂开始比赛。cercei跨越了0个障碍。杰米越过了0号障碍。提利昂越过了0号障碍。杰米越过了一个障碍。杰米越过了两个障碍。cercei越过了1个障碍。cercei越过了2个障碍。赛尔西完成了比赛。提利昂越过了一个障碍。提利昂越过了2号障碍物。提利昂完成了比赛。杰米跑完了全程。
我已经写了整个代码,就像我在互联网上读到的线程操作一样,但是没有任何输出。此外,我还检查了调试器。之后 t.strat()
方法,它永远不会进入 run() method
. 你能帮忙吗?
原始问题:
在下面的代码中编辑player类,以便代码给出预期的输出。不要只打印预期的输出。不要编辑竞赛类。不允许在player类中添加任何变量。只添加必要的方法。您的代码会给出与预期输出完全相同的输出吗?解释原因。
class Player implements Runnable{
Thread t;
}
class Competition{
public static void main(String[] args){
Player player1 = new Player("Cercei");
Player player2 = new Player("Jamie");
Player player3 = new Player("Tyrion");
}
}
2条答案
按热度按时间7cjasjjr1#
你需要告诉警察
Thread t
在你们班里Player
目标是什么Runnable
它应该运行。根据你的设计,目标
Runnable
是Player
阶级本身(this
):在当前代码中,初始化
Thread t
作为new Thread()
但你没有提供任何Runnable
要瞄准目标,那么.start()
线程的方法什么也不做。p、 我非常同意andy turner的评论(尽管我猜你这样做只是为了练习):在构造函数中启动线程确实不是好的做法。
yebdmbv42#
您只是在中缺少一个参数“this”
Thread
建造师