Java 为什么调试和运行程序的输出顺序不同?
我编写了一个程序,使用for循环生成一组对象,然后将输出发送到控制台。我已设法使输出可读。但是,控制台输出看起来不太好 “玩家”类代码: “多层”类代码 跑步后我看到的是:Java 为什么调试和运行程序的输出顺序不同?,java,for-loop,Java,For Loop,我编写了一个程序,使用for循环生成一组对象,然后将输出发送到控制台。我已设法使输出可读。但是,控制台输出看起来不太好 “玩家”类代码: “多层”类代码 跑步后我看到的是: Player なのは 1 ATK 100 100 ATK 100 Player なのは 2 100 由于程序可以很好地运行,并且在调试期间我没有看到异常结果,所以我不知道为什么输出会以不同的顺序显示 System.out和System.err不能保证它们在控制台上的显示顺序,因为它们是不同的流。我建
Player なのは 1
ATK 100
100
ATK 100
Player なのは 2
100
由于程序可以很好地运行,并且在调试期间我没有看到异常结果,所以我不知道为什么输出会以不同的顺序显示 System.out和System.err不能保证它们在控制台上的显示顺序,因为它们是不同的流。我建议只使用System.out进行输出。控制台是否显示乱码?是否有一条消息转到
System.err
,而其他消息转到System.out
?@并引起注意。虽然它会从IDE显示在控制台中,但不可能按所需顺序显示。另外:在构造函数中设置的任何变量都不应该是静态的,例如Name
,HP
@Mena真的吗?除了排序,我看不出输出有什么不同。而static
变量不会对调试/非调试产生影响。
public class Multiplayers
{
public static void createPlayer()
{
int playerCount;
int players [] = new int [2];
for (playerCount = 0; playerCount<players.length; playerCount++)
{
Player p1 = new Player("なのは", 100, 100);
StringBuilder p1_n = p1.setName();
System.out.print(p1_n+" ");
System.out.println(playerCount+1);
System.err.println("ATK "+Player.ATK);
System.out.println(Player.HP);
}
}
}
Player なのは 1
ATK 100
100
Player なのは 2
ATK 100
100
Player なのは 1
ATK 100
100
ATK 100
Player なのは 2
100