Java 如果使用某个参数调用某个方法,如何取消打印语句?

Java 如果使用某个参数调用某个方法,如何取消打印语句?,java,printing,non-static,Java,Printing,Non Static,我不确定问题是否很清楚,也许代码会有所帮助 这是SpaceGame构造器的一部分 player.setPlanets(planets); //set Planets for player enemy.setPlanets(planets); //set Planets for enemy 这是setPlanets方法的一部分 public void setPlanets (ArrayList<Planet> planets) { for (int i = 0;

我不确定问题是否很清楚,也许代码会有所帮助

这是SpaceGame构造器的一部分

   player.setPlanets(planets); //set Planets for player

   enemy.setPlanets(planets); //set Planets for enemy
这是setPlanets方法的一部分

public void setPlanets (ArrayList<Planet> planets) {
    for (int i = 0; i < planets.size(); i++) //Iterate through the ArrayList of Planets
        {
            System.out.println(planets.get(i)); //Prints the info of each planet
        }
公共空间集合行星(ArrayList行星){
for(int i=0;i

当游戏开始时,行星会被打印两次。如果我使用敌方设置行星,有没有办法取消它?

你可以使用布尔值作为条件

public void setPlanets (ArrayList<Planet> planets, boolean print) {
    for (int i = 0; i < planets.size(); i++) //Iterate through the ArrayList of Planets
        {
           if (print) {
              System.out.println(planets.get(i)); //Prints the info of each planet
           }
        }


player.setPlanets(planets, true); //set Planets for player

enemy.setPlanets(planets, false); //set Planets for enemy

足够了。

我知道您将打印两种不同的信息。一种是针对玩家的信息,另一种是针对敌人的信息,所以问题出在哪里?这是不同的信息,因此如果您想在开始游戏时只打印一种信息,您应该写:

if (gameStarted){
     player.setPlanets(planets); //set Planets for player        
}else{
     player.setPlanets(planets); //set Planets for player        
     enemy.setPlanets(planets); //set Planets for enemy
}

或者viceversa。

我认为bejond的回答很好,但它会检查循环中每个元素的打印条件。 您可以在进入循环之前检查条件,以获得更好的性能

player.setPlanets(planets, true); //set Planets for player
enemy.setPlanets(planets, false); //set Planets for enemy
您的函数现在应该是这样的

public void setPlanets (ArrayList<Planet> planets, boolean isPrinted) 
{

        if (isPrinted) 
        {
           for (int i = 0; i < planets.size(); i++) //Iterate through the ArrayList of Planets
           {
              System.out.println(planets.get(i)); //Prints the info of each planet
           }
        }

        //your code...
}
public void setPlanets(ArrayList planets,打印布尔值)
{
如果(已打印)
{
for(int i=0;i

如果愿意,也可以像bejond建议的那样重载函数。

您在
setPlanets()中所做的一切
是遍历行星列表并打印它们,所以,不要调用
敌人。setPlanets
?不,这只是代码的一部分,为了可读性,我删除了其余部分
,这是setPlanets方法
<,这让我假设它是setPlanets方法的全部。请发布所有内容或指定它只是m的一部分方法将行星打印与行星设置分离,然后可以调用:
printPlanets(planets);player.setPlanets(planets);敌军.setPlanets(planets)
谢谢!所以没有办法用if语句或类似的语句来修改setplants?当然,很好。如果循环中有更多代码,那么if就必须在代码块中。嗨,谢谢你的回答。我被告知我需要修改setplants,以便它一次初始化Spaceship类的所有实例(玩家和敌人)所以我不会叫它两次。嗨,谢谢你的回答。我被告知我需要修改setPlanets,以便它一次初始化宇宙飞船类的所有实例(玩家和敌人),所以我不会叫它两次。如果你试图用一种方法初始化玩家和敌人,我建议你创建另一种方法,比如inits()并调用两次setPlanets。这种方式将使setPlanets可重用。如果你只想调用一次setPlanets,你必须使用
If else
条件。但这会降低setPlanets的可重用性,这与面向对象不符。它更像是面向过程的。希望我说清楚。
player.setPlanets(planets, true); //set Planets for player
enemy.setPlanets(planets, false); //set Planets for enemy
public void setPlanets (ArrayList<Planet> planets, boolean isPrinted) 
{

        if (isPrinted) 
        {
           for (int i = 0; i < planets.size(); i++) //Iterate through the ArrayList of Planets
           {
              System.out.println(planets.get(i)); //Prints the info of each planet
           }
        }

        //your code...
}