为什么调试和运行程序之间的输出顺序不同?

时间:2016-02-01 16:52:43

标签: java for-loop

我编写了一个程序,使用for循环生成一组对象,然后将输出发送到控制台。我设法使输出可读。然而,控制台输出看起来不太好。

“玩家”类的代码:

public class Player
{
    static String Name; 
    static int HP; 
    static int ATK; 
    static int playerNum; 

    public Player()
    {
        System.out.println("Empty constructor called. "); 
    }

    public Player(String Name, int HP, int ATK)
    {
        Player.Name = Name; 
        Player.HP = HP; 
        Player.ATK = ATK; 

    }

    public StringBuilder setName()
    {
        StringBuilder conc = new StringBuilder();       
        StringBuilder result = conc.append("Player ").append(Name); 
        return result; 
    }

}

“Multiplayers”类的代码

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

main方法只调用“createPlayer()”方法。 我希望控制台显示的是这个,我可以在调试时看到它:

Player なのは 1  
ATK 100  
100  
Player なのは 2  
ATK 100  
100

跑步后我看到的是:

Player なのは 1  
ATK 100  
100  
ATK 100  
Player なのは 2  
100  

由于程序可以很好地运行,并且在调试期间我没有看到异常结果,我不知道为什么输出以不同的顺序显示。

1 个答案:

答案 0 :(得分:1)

System.out和System.err无法保证它们在控制台上的显示顺序,因为它们是不同的流。我建议只使用System.out进行输出。