1

Well, honestly, I have no idea what's gone wrong here, I've looked through all of my code and couldn't find any assignments or anything like that, and after Bing AI couldn't help, I don't what I did wrong. Anyway here's my code:

import java.util.Iterator;
class Particle {
  float radius = 15;
  int lifeTime = 300;
  PVector pos = new PVector();
  void Display() {
    pos.add(PVector.random2D().limit(7));
    fill(255, 162, 0, 125);
    lifeTime--;
    radius = lifeTime/10;
  }
  boolean Dead() {
    return lifeTime <= 0;
  }
  Particle(PVector pos) {
  }
  Particle(int life_time, float radius, PVector pos) {
    this.lifeTime = life_time;
    this.radius = radius;
    this.pos = pos;
  }
}
class PartSys {
  final PVector Pos = new PVector(50,50);
  ArrayList<Particle> Particles = new ArrayList<Particle>();
  int PartPerFrame =1 ;
  void run() {
    circle(Pos.x,Pos.y,100);
    for (int i = 0; i < PartPerFrame; i++)
      Particles.add(new Particle(150,10,Pos));
    Iterator<Particle> iter = Particles.iterator();
    while (iter.hasNext()) {
      Particle part = iter.next();
      if (part.Dead())
        iter.remove();
      part.Display();
    }
  }
}
PartSys sys;
void setup(){size(300,300);
sys = new PartSys();
sys.Particles.add(new Particle(sys.Pos));}
void draw() {
  background(235);
  sys.run();
//printing output ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
                  print(sys.Pos);
}

And if you want the output here it is (60 frames) output from print(sys.Pos);:

[ 50.821663, 49.430023, 0.0 ]
[ 51.5533, 50.05951, 0.0 ]
[ 52.480217, 47.30107, 0.0 ]
[ 53.643673, 48.13987, 0.0 ]
[ 55.82994, 50.354572, 0.0 ]
[ 58.192818, 51.504097, 0.0 ]
[ 57.82679, 52.627758, 0.0 ]
[ 54.456882, 52.148365, 0.0 ]
[ 57.276096, 49.27265, 0.0 ]
[ 57.65083, 49.153095, 0.0 ]
[ 56.978725, 50.708504, 0.0 ]
[ 57.20197, 47.268326, 0.0 ]
[ 57.10294, 47.711933, 0.0 ]
[ 55.997593, 45.283146, 0.0 ]
[ 56.923397, 49.33384, 0.0 ]
[ 59.97882, 47.74817, 0.0 ]
[ 59.18079, 46.330868, 0.0 ]
[ 62.282166, 47.360676, 0.0 ]
[ 59.184853, 48.83381, 0.0 ]
[ 62.946915, 47.83082, 0.0 ]
[ 64.225945, 47.699486, 0.0 ]
[ 63.970665, 46.07079, 0.0 ]
[ 60.725388, 45.80128, 0.0 ]
[ 55.0587, 45.409607, 0.0 ]
[ 53.8556, 50.21724, 0.0 ]
[ 61.024002, 48.70884, 0.0 ]
[ 65.99121, 50.652534, 0.0 ]
[ 67.978355, 50.041943, 0.0 ]
[ 70.69233, 54.368584, 0.0 ]
[ 74.01484, 51.276684, 0.0 ]
[ 71.097664, 54.46409, 0.0 ]
[ 70.14009, 53.808517, 0.0 ]
[ 69.09675, 54.651142, 0.0 ]
[ 74.21626, 57.58804, 0.0 ]
[ 68.227135, 55.275978, 0.0 ]
[ 69.69138, 61.491447, 0.0 ]
[ 62.82039, 64.48831, 0.0 ]
[ 67.152855, 63.46894, 0.0 ]
[ 72.05418, 63.6807, 0.0 ]
[ 74.5831, 64.97206, 0.0 ]
[ 64.12507, 64.23787, 0.0 ]
[ 61.75983, 64.622955, 0.0 ]
[ 76.63141, 58.98788, 0.0 ]
[ 79.29824, 61.184925, 0.0 ]
[ 76.38007, 60.905666, 0.0 ]
[ 68.29446, 60.337387, 0.0 ]
[ 73.783104, 55.369278, 0.0 ]
[ 72.36568, 48.485783, 0.0 ]
[ 59.848167, 47.158314, 0.0 ]
[ 55.83285, 48.908268, 0.0 ]
[ 62.421993, 41.967438, 0.0 ]
[ 59.39648, 44.411724, 0.0 ]
[ 65.16808, 36.394894, 0.0 ]
[ 64.009636, 37.80784, 0.0 ]
[ 63.28938, 33.255817, 0.0 ]
[ 63.366882, 24.063602, 0.0 ]
[ 62.18882, 35.320347, 0.0 ]
[ 62.014744, 28.993261, 0.0 ]
[ 62.57812, 24.168509, 0.0 ]

This is my first post, so if you have any tips i'll take them!

1 Answers1

-1

Well, I realized that Java (Unlike C# to my knowledge), takes in objects by reference (Thank you @xerx593), e.g.

double val = 3;
void setup(){
  println(val);
  Change(val);
 println(val);
}
void Change(double val){
    val += 2;
}

The first print gives 3, and the second (contrary to what I thought it would) gives 5.

  • 1
    Even C# passes class objects by reference (structs are copied) – knittl Aug 28 '23 at 20:22
  • Hmm, I thought the ref keyword was for doing that. – super turkey Aug 29 '23 at 00:16
  • Whoa! I've got 29 rep! That's 18 today! (Completely off-topic) – super turkey Aug 29 '23 at 00:17
  • No, the `ref` keyword allows you to change the reference itself to reference a different object. – knittl Aug 29 '23 at 06:17
  • Whilst Java passes references to objects, it does not pass references to primitives like double. Run this from a static main method of class Scratch: `class Scratch { public static void main(String[] args) { double val = 3; System.out.println(val); change(val); System.out.println(val); } static void change(double val) { val += 2; } }` and we see the following output: `3.0` `3.0` – roj Aug 30 '23 at 05:33
  • This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. - [From Review](/review/late-answers/34911907) – roj Aug 30 '23 at 05:36