2016-01-05 61 views
0

我試圖模擬太陽周圍的地球軌道使它打印出它的當前位置。我對java很陌生,無法在循環內正確地打印「newP」數組。目前我using-地球軌道太陽模擬對象陣列打印不正確java

System.out.println(Arrays.deepToString(newP)); 

我也試過:

System.out.println(Arrays.toString(newP)); 

無濟於事。我肯定也導入了Java util陣列,我不知道爲什麼它不工作。沒有其他錯誤出現在代碼中。代碼的循環低於:

do{ 
     PhysicsVector[] y = new PhysicsVector[gravField.length]; 
     y=copyArray(gravField); 

     for(int i=0; i<planets.length;i++){ 
      newP[i] = planets[i].updatePosition(position[i], velocity[i], timeStep, gravField[i]); 

     } 

     for(int j=0; j<gravityObject.length; j++){  
      for(int l=0;l<gravityObject.length;l++){ 
       if(j!=l){ 
        newGrav[j].increaseBy(gravityObject[j].aDueToGravity(planetMass[l], newP[l], newP[j])); 

       } 
      } 
     } 

     for(int k=0; k<planets.length; k++){ 
      newVel[k] = planets[k].updateVelocity(velocity[k], timeStep, y[k], newGrav[k]); 
     } 



     time+=timeStep; 
     double x = newP[0].getX(); 
     double ap = newP[0].getY(); 
     n.println(x+" "+ap); 
     System.out.println(Arrays.deepToString(newP)); 

    }while (timeStep<(24*60*60*365.25)); 

試圖在循環打印陣列時,我得到的輸出是低於

[[email protected], [email protected], [email protected]] 
[[email protected], [email protected], [email protected]] 
[[email protected], [email protected], [email protected]] 
[[email protected], [email protected], [email protected]] 

我期待的輸出是向量的列表。 在此先感謝。

+3

這可能是因爲PhysicsVector沒有toString方法。如果是你的班級,請添加它。 – pvg

回答

2

您看到java.lang.Object類中定義的默認toString()實現的輸出。爲了得到不同的結果,你有兩個主要選擇

  • 覆蓋toString()在PhysicsVector類返回某種對象內容格式化字符串。這只是涉及添加一個方法到PhysicsVector類像...

    public class PhysicsVector { 
        .... 
        @Override 
        public String toString() { 
         return "PhysicsVector[" + this.getX() + ", " + this.getY() + "]"; 
        } 
    
  • 使用某種地圖的轉換PhysicsVector []爲String []。在此Java8可能看起來像

    final String[] outputArray = Arrays.stream(newP).map((p) -> "PhysicsVector[" + p.getX() + ", " + p.getY() + "]").toArray() 
    

如果你不使用Java8您可能需要使用一個循環...

final String[] outputArray = new String[newP.length] 
for (int i = 0; i< newP.length; i++) { 
    outputArray[i] = "PhysicsVector[" + newP[i].getX() + ", " + newP[i].getY() + "]"; 
}