Why is this Java code not working?

Click For Summary
SUMMARY

The Java code provided by the user for simulating motion is not functioning correctly due to issues in the logic for updating velocity and position. The user is advised to clarify what "not working" means, as it could refer to various problems such as syntax errors or logical errors. A suggested solution involves modifying the code to run in the Processing environment, which requires changing the main method to a setup method and adjusting the class structure. The corrected code successfully outputs the expected results for position and velocity over time.

PREREQUISITES
  • Understanding of Java programming language
  • Familiarity with basic physics concepts such as motion and velocity
  • Knowledge of the Processing development environment
  • Ability to debug and troubleshoot code
NEXT STEPS
  • Learn how to set up and use the Processing IDE for Java programming
  • Study Java arrays and their manipulation for simulations
  • Explore numerical methods for solving differential equations in motion
  • Investigate Java debugging techniques to identify and fix code issues
USEFUL FOR

Java developers, physics students, and anyone interested in programming simulations or learning about motion dynamics in a coding environment.

hagopbul
Messages
397
Reaction score
45
Hello all:
I am reading a comutacomputa physics book and trying a code from it in MATLAB it is not working and due to my lack of knowledge in this field I can't see where is the mistake hope you can take a look

Java:
import java.lang .*;

public class Motion {

  static final int n = 100000, j = 500;

  public static void main(String argv[]) {
    double x[] = new double[n+1];
    double v[] = new double[n+1];

    double dt = 2*Math.PI/n;
    x[0] = 0;
    v[0] = 1;

    for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }

    double t=0 ;
    double jdt = j*dt;
 
    for (int i=0; i<=n; i+=j) {
        System.out.println(t +""+x [ i ]+""+ v[ i ]);
        t += jdt;
    }
  }
}

<mentor: add code tags>
 
Last edited by a moderator:
Technology news on Phys.org
I added code tags which help readability.

Please define "not working". This could mean:
it throws an error, freezes, reboots your computer, stack dumps, or has syntax problems (looks like that to start with)

This is no different than taking your car to a repair shop. If you say 'the car does not work' you will get 20 questions, I'm trying gently to push you toward learning how to specify problems like this one.
 
  • Like
Likes   Reactions: hagopbul and Wrichik Basu
Another idea is to install the Processing app and run the code directly inside with a few mods to the source.

Remove the class line, replace the main line with
void setup() and remove the extraneous braces.

So you can run your code in the setup method.

What is wrong with your code exactly?
 
Last edited:
This part looks wrong... Are you trying to calculate the new velocity from current velocity and acceleration? If so, why did you re-use the position variable "x"?

Java:
for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }
 
Here's my java code that runs in Processing:

Java:
int n = 100000;
int j = 500;

void setup()
{
    double x[] = new double[n+1];
    double v[] = new double[n+1];

    double dt = 2*Math.PI/n;
    x[0] = 0;
    v[0] = 1;

    for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }

    double t=0 ;
    double jdt = j*dt;

    for (int i=0; i<=n; i+=j) {
        System.out.printf("\ni = [%06d] t = %8.3f  x[i] = %8.3f  v[i] = %8.3f",i,t,x[i],v[i]);
        t += jdt;
    }
}

and here's the formatted output I get:

Code:
i = [000000] t =    0.000  x[i] =    0.000  v[i] =    1.000
i = [000500] t =    0.031  x[i] =    0.031  v[i] =    1.000
i = [001000] t =    0.063  x[i] =    0.063  v[i] =    0.998
i = [001500] t =    0.094  x[i] =    0.094  v[i] =    0.996
i = [002000] t =    0.126  x[i] =    0.125  v[i] =    0.992
i = [002500] t =    0.157  x[i] =    0.156  v[i] =    0.988
i = [003000] t =    0.188  x[i] =    0.187  v[i] =    0.982
i = [003500] t =    0.220  x[i] =    0.218  v[i] =    0.976
i = [004000] t =    0.251  x[i] =    0.249  v[i] =    0.969
i = [004500] t =    0.283  x[i] =    0.279  v[i] =    0.960
i = [005000] t =    0.314  x[i] =    0.309  v[i] =    0.951
i = [005500] t =    0.346  x[i] =    0.339  v[i] =    0.941
i = [006000] t =    0.377  x[i] =    0.368  v[i] =    0.930
i = [006500] t =    0.408  x[i] =    0.397  v[i] =    0.918
i = [007000] t =    0.440  x[i] =    0.426  v[i] =    0.905
i = [007500] t =    0.471  x[i] =    0.454  v[i] =    0.891
i = [008000] t =    0.503  x[i] =    0.482  v[i] =    0.876
i = [008500] t =    0.534  x[i] =    0.509  v[i] =    0.861
i = [009000] t =    0.565  x[i] =    0.536  v[i] =    0.844
i = [009500] t =    0.597  x[i] =    0.562  v[i] =    0.827
i = [010000] t =    0.628  x[i] =    0.588  v[i] =    0.809
i = [010500] t =    0.660  x[i] =    0.613  v[i] =    0.790
i = [011000] t =    0.691  x[i] =    0.637  v[i] =    0.771
i = [011500] t =    0.723  x[i] =    0.661  v[i] =    0.750
i = [012000] t =    0.754  x[i] =    0.685  v[i] =    0.729
i = [012500] t =    0.785  x[i] =    0.707  v[i] =    0.707
i = [013000] t =    0.817  x[i] =    0.729  v[i] =    0.685
i = [013500] t =    0.848  x[i] =    0.750  v[i] =    0.661
i = [014000] t =    0.880  x[i] =    0.771  v[i] =    0.637
i = [014500] t =    0.911  x[i] =    0.790  v[i] =    0.613
i = [015000] t =    0.942  x[i] =    0.809  v[i] =    0.588
i = [015500] t =    0.974  x[i] =    0.827  v[i] =    0.562
i = [016000] t =    1.005  x[i] =    0.844  v[i] =    0.536
i = [016500] t =    1.037  x[i] =    0.861  v[i] =    0.509
i = [017000] t =    1.068  x[i] =    0.876  v[i] =    0.482
i = [017500] t =    1.100  x[i] =    0.891  v[i] =    0.454
i = [018000] t =    1.131  x[i] =    0.905  v[i] =    0.426
i = [018500] t =    1.162  x[i] =    0.918  v[i] =    0.397
i = [019000] t =    1.194  x[i] =    0.930  v[i] =    0.368
i = [019500] t =    1.225  x[i] =    0.941  v[i] =    0.339
i = [020000] t =    1.257  x[i] =    0.951  v[i] =    0.309
i = [020500] t =    1.288  x[i] =    0.960  v[i] =    0.279
i = [021000] t =    1.319  x[i] =    0.969  v[i] =    0.249
i = [021500] t =    1.351  x[i] =    0.976  v[i] =    0.218
i = [022000] t =    1.382  x[i] =    0.982  v[i] =    0.187
i = [022500] t =    1.414  x[i] =    0.988  v[i] =    0.156
i = [023000] t =    1.445  x[i] =    0.992  v[i] =    0.125
i = [023500] t =    1.477  x[i] =    0.996  v[i] =    0.094
i = [024000] t =    1.508  x[i] =    0.998  v[i] =    0.063
i = [024500] t =    1.539  x[i] =    1.000  v[i] =    0.031
i = [025000] t =    1.571  x[i] =    1.000  v[i] =    0.000
i = [025500] t =    1.602  x[i] =    1.000  v[i] =   -0.031
i = [026000] t =    1.634  x[i] =    0.998  v[i] =   -0.063
i = [026500] t =    1.665  x[i] =    0.996  v[i] =   -0.094
i = [027000] t =    1.696  x[i] =    0.992  v[i] =   -0.125
i = [027500] t =    1.728  x[i] =    0.988  v[i] =   -0.156
i = [028000] t =    1.759  x[i] =    0.982  v[i] =   -0.187
i = [028500] t =    1.791  x[i] =    0.976  v[i] =   -0.218
i = [029000] t =    1.822  x[i] =    0.969  v[i] =   -0.249
i = [029500] t =    1.854  x[i] =    0.960  v[i] =   -0.279
i = [030000] t =    1.885  x[i] =    0.951  v[i] =   -0.309
i = [030500] t =    1.916  x[i] =    0.941  v[i] =   -0.339
i = [031000] t =    1.948  x[i] =    0.930  v[i] =   -0.368
i = [031500] t =    1.979  x[i] =    0.918  v[i] =   -0.397
i = [032000] t =    2.011  x[i] =    0.905  v[i] =   -0.426
i = [032500] t =    2.042  x[i] =    0.891  v[i] =   -0.454
i = [033000] t =    2.073  x[i] =    0.876  v[i] =   -0.482
i = [033500] t =    2.105  x[i] =    0.861  v[i] =   -0.509
i = [034000] t =    2.136  x[i] =    0.844  v[i] =   -0.536
i = [034500] t =    2.168  x[i] =    0.827  v[i] =   -0.562
i = [035000] t =    2.199  x[i] =    0.809  v[i] =   -0.588
i = [035500] t =    2.231  x[i] =    0.790  v[i] =   -0.613
i = [036000] t =    2.262  x[i] =    0.771  v[i] =   -0.637
i = [036500] t =    2.293  x[i] =    0.750  v[i] =   -0.661
i = [037000] t =    2.325  x[i] =    0.729  v[i] =   -0.685
i = [037500] t =    2.356  x[i] =    0.707  v[i] =   -0.707
i = [038000] t =    2.388  x[i] =    0.685  v[i] =   -0.729
i = [038500] t =    2.419  x[i] =    0.661  v[i] =   -0.750
i = [039000] t =    2.450  x[i] =    0.637  v[i] =   -0.771
i = [039500] t =    2.482  x[i] =    0.613  v[i] =   -0.790
i = [040000] t =    2.513  x[i] =    0.588  v[i] =   -0.809
i = [040500] t =    2.545  x[i] =    0.562  v[i] =   -0.827
i = [041000] t =    2.576  x[i] =    0.536  v[i] =   -0.844
i = [041500] t =    2.608  x[i] =    0.509  v[i] =   -0.861
i = [042000] t =    2.639  x[i] =    0.482  v[i] =   -0.876
i = [042500] t =    2.670  x[i] =    0.454  v[i] =   -0.891
i = [043000] t =    2.702  x[i] =    0.426  v[i] =   -0.905
i = [043500] t =    2.733  x[i] =    0.397  v[i] =   -0.918
i = [044000] t =    2.765  x[i] =    0.368  v[i] =   -0.930
i = [044500] t =    2.796  x[i] =    0.339  v[i] =   -0.941
i = [045000] t =    2.827  x[i] =    0.309  v[i] =   -0.951
i = [045500] t =    2.859  x[i] =    0.279  v[i] =   -0.960
i = [046000] t =    2.890  x[i] =    0.249  v[i] =   -0.969
i = [046500] t =    2.922  x[i] =    0.218  v[i] =   -0.976
i = [047000] t =    2.953  x[i] =    0.187  v[i] =   -0.982
i = [047500] t =    2.985  x[i] =    0.156  v[i] =   -0.988
i = [048000] t =    3.016  x[i] =    0.125  v[i] =   -0.992
i = [048500] t =    3.047  x[i] =    0.094  v[i] =   -0.996
i = [049000] t =    3.079  x[i] =    0.063  v[i] =   -0.998
i = [049500] t =    3.110  x[i] =    0.031  v[i] =   -1.000
i = [050000] t =    3.142  x[i] =    0.000  v[i] =   -1.000
i = [050500] t =    3.173  x[i] =   -0.031  v[i] =   -1.000
i = [051000] t =    3.204  x[i] =   -0.063  v[i] =   -0.998
i = [051500] t =    3.236  x[i] =   -0.094  v[i] =   -0.996
i = [052000] t =    3.267  x[i] =   -0.125  v[i] =   -0.992
i = [052500] t =    3.299  x[i] =   -0.156  v[i] =   -0.988
i = [053000] t =    3.330  x[i] =   -0.187  v[i] =   -0.982
i = [053500] t =    3.362  x[i] =   -0.218  v[i] =   -0.976
i = [054000] t =    3.393  x[i] =   -0.249  v[i] =   -0.969
i = [054500] t =    3.424  x[i] =   -0.279  v[i] =   -0.960
i = [055000] t =    3.456  x[i] =   -0.309  v[i] =   -0.951
i = [055500] t =    3.487  x[i] =   -0.339  v[i] =   -0.941
i = [056000] t =    3.519  x[i] =   -0.368  v[i] =   -0.930
i = [056500] t =    3.550  x[i] =   -0.397  v[i] =   -0.918
i = [057000] t =    3.581  x[i] =   -0.426  v[i] =   -0.905
i = [057500] t =    3.613  x[i] =   -0.454  v[i] =   -0.891
i = [058000] t =    3.644  x[i] =   -0.482  v[i] =   -0.876
i = [058500] t =    3.676  x[i] =   -0.509  v[i] =   -0.861
i = [059000] t =    3.707  x[i] =   -0.536  v[i] =   -0.844
i = [059500] t =    3.738  x[i] =   -0.562  v[i] =   -0.827
i = [060000] t =    3.770  x[i] =   -0.588  v[i] =   -0.809
i = [060500] t =    3.801  x[i] =   -0.613  v[i] =   -0.790
i = [061000] t =    3.833  x[i] =   -0.638  v[i] =   -0.771
i = [061500] t =    3.864  x[i] =   -0.661  v[i] =   -0.750
i = [062000] t =    3.896  x[i] =   -0.685  v[i] =   -0.729
i = [062500] t =    3.927  x[i] =   -0.707  v[i] =   -0.707
i = [063000] t =    3.958  x[i] =   -0.729  v[i] =   -0.685
i = [063500] t =    3.990  x[i] =   -0.750  v[i] =   -0.661
i = [064000] t =    4.021  x[i] =   -0.771  v[i] =   -0.638
i = [064500] t =    4.053  x[i] =   -0.790  v[i] =   -0.613
i = [065000] t =    4.084  x[i] =   -0.809  v[i] =   -0.588
i = [065500] t =    4.115  x[i] =   -0.827  v[i] =   -0.562
i = [066000] t =    4.147  x[i] =   -0.844  v[i] =   -0.536
i = [066500] t =    4.178  x[i] =   -0.861  v[i] =   -0.509
i = [067000] t =    4.210  x[i] =   -0.876  v[i] =   -0.482
i = [067500] t =    4.241  x[i] =   -0.891  v[i] =   -0.454
i = [068000] t =    4.273  x[i] =   -0.905  v[i] =   -0.426
i = [068500] t =    4.304  x[i] =   -0.918  v[i] =   -0.397
i = [069000] t =    4.335  x[i] =   -0.930  v[i] =   -0.368
i = [069500] t =    4.367  x[i] =   -0.941  v[i] =   -0.339
i = [070000] t =    4.398  x[i] =   -0.951  v[i] =   -0.309
i = [070500] t =    4.430  x[i] =   -0.960  v[i] =   -0.279
i = [071000] t =    4.461  x[i] =   -0.969  v[i] =   -0.249
i = [071500] t =    4.492  x[i] =   -0.976  v[i] =   -0.218
i = [072000] t =    4.524  x[i] =   -0.982  v[i] =   -0.187
i = [072500] t =    4.555  x[i] =   -0.988  v[i] =   -0.156
i = [073000] t =    4.587  x[i] =   -0.992  v[i] =   -0.125
i = [073500] t =    4.618  x[i] =   -0.996  v[i] =   -0.094
i = [074000] t =    4.650  x[i] =   -0.998  v[i] =   -0.063
i = [074500] t =    4.681  x[i] =   -1.000  v[i] =   -0.031
i = [075000] t =    4.712  x[i] =   -1.000  v[i] =   -0.000
i = [075500] t =    4.744  x[i] =   -1.000  v[i] =    0.031
i = [076000] t =    4.775  x[i] =   -0.998  v[i] =    0.063
i = [076500] t =    4.807  x[i] =   -0.996  v[i] =    0.094
i = [077000] t =    4.838  x[i] =   -0.992  v[i] =    0.125
i = [077500] t =    4.869  x[i] =   -0.988  v[i] =    0.156
i = [078000] t =    4.901  x[i] =   -0.982  v[i] =    0.187
i = [078500] t =    4.932  x[i] =   -0.976  v[i] =    0.218
i = [079000] t =    4.964  x[i] =   -0.969  v[i] =    0.249
i = [079500] t =    4.995  x[i] =   -0.960  v[i] =    0.279
i = [080000] t =    5.027  x[i] =   -0.951  v[i] =    0.309
i = [080500] t =    5.058  x[i] =   -0.941  v[i] =    0.339
i = [081000] t =    5.089  x[i] =   -0.930  v[i] =    0.368
i = [081500] t =    5.121  x[i] =   -0.918  v[i] =    0.397
i = [082000] t =    5.152  x[i] =   -0.905  v[i] =    0.426
i = [082500] t =    5.184  x[i] =   -0.891  v[i] =    0.454
i = [083000] t =    5.215  x[i] =   -0.876  v[i] =    0.482
i = [083500] t =    5.246  x[i] =   -0.861  v[i] =    0.509
i = [084000] t =    5.278  x[i] =   -0.844  v[i] =    0.536
i = [084500] t =    5.309  x[i] =   -0.827  v[i] =    0.562
i = [085000] t =    5.341  x[i] =   -0.809  v[i] =    0.588
i = [085500] t =    5.372  x[i] =   -0.790  v[i] =    0.613
i = [086000] t =    5.404  x[i] =   -0.771  v[i] =    0.638
i = [086500] t =    5.435  x[i] =   -0.750  v[i] =    0.661
i = [087000] t =    5.466  x[i] =   -0.729  v[i] =    0.685
i = [087500] t =    5.498  x[i] =   -0.707  v[i] =    0.707
i = [088000] t =    5.529  x[i] =   -0.685  v[i] =    0.729
i = [088500] t =    5.561  x[i] =   -0.661  v[i] =    0.750
i = [089000] t =    5.592  x[i] =   -0.638  v[i] =    0.771
i = [089500] t =    5.623  x[i] =   -0.613  v[i] =    0.790
i = [090000] t =    5.655  x[i] =   -0.588  v[i] =    0.809
i = [090500] t =    5.686  x[i] =   -0.562  v[i] =    0.827
i = [091000] t =    5.718  x[i] =   -0.536  v[i] =    0.844
i = [091500] t =    5.749  x[i] =   -0.509  v[i] =    0.861
i = [092000] t =    5.781  x[i] =   -0.482  v[i] =    0.876
i = [092500] t =    5.812  x[i] =   -0.454  v[i] =    0.891
i = [093000] t =    5.843  x[i] =   -0.426  v[i] =    0.905
i = [093500] t =    5.875  x[i] =   -0.397  v[i] =    0.918
i = [094000] t =    5.906  x[i] =   -0.368  v[i] =    0.930
i = [094500] t =    5.938  x[i] =   -0.339  v[i] =    0.941
i = [095000] t =    5.969  x[i] =   -0.309  v[i] =    0.951
i = [095500] t =    6.000  x[i] =   -0.279  v[i] =    0.960
i = [096000] t =    6.032  x[i] =   -0.249  v[i] =    0.969
i = [096500] t =    6.063  x[i] =   -0.218  v[i] =    0.976
i = [097000] t =    6.095  x[i] =   -0.187  v[i] =    0.982
i = [097500] t =    6.126  x[i] =   -0.156  v[i] =    0.988
i = [098000] t =    6.158  x[i] =   -0.125  v[i] =    0.992
i = [098500] t =    6.189  x[i] =   -0.094  v[i] =    0.996
i = [099000] t =    6.220  x[i] =   -0.063  v[i] =    0.998
i = [099500] t =    6.252  x[i] =   -0.031  v[i] =    1.000
i = [100000] t =    6.283  x[i] =   -0.000  v[i] =    1.000
 
If you want it in MATLAB, why not write it in MATLAB language (instead of Java)?
I didn't even know MATLAB could run Java.
And we're still not sure what "not working" means to you. Please elaborate.
 
  • Like
Likes   Reactions: Wrichik Basu
berkeman said:
This part looks wrong... Are you trying to calculate the new velocity from current velocity and acceleration? If so, why did you re-use the position variable "x"?

Java:
for (int i=0; i<n; ++i) {
        x[ i+1 ] = x[ i ] + v[ i ]*dt;
        v[ i+1 ] = v[ i ] - x[ i ]*dt;
    }
Harmonic oscillator :smile:
 
  • Like
Likes   Reactions: Wrichik Basu and berkeman

Similar threads

  • · Replies 1 ·
Replies
1
Views
892
  • · Replies 8 ·
Replies
8
Views
2K
Replies
8
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
1
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 1 ·
Replies
1
Views
889