Why is this Java code not working?

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
7 replies · 2K views
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:
Physics 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