Why is this Java code not working?

In summary, The code provided is trying to simulate a motion using the Euler method. However, there is an error in the calculation of the new velocity which is causing the code to not work correctly. The mentor suggests using the Processing app to run the code with a few modifications or to specify the exact issue with the code. They also provide their own code and output as a reference.
  • #1
hagopbul
357
36
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
  • #2
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 hagopbul and Wrichik Basu
  • #4
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:
  • #5
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;
    }
 
  • #6
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
 
  • #7
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 Wrichik Basu
  • #8
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 Wrichik Basu and berkeman

1. Why am I getting an error when I try to run my Java code?

There could be a few different reasons for this. Some common causes of errors in Java code include syntax errors, missing or incorrect imports, and runtime errors such as null pointer exceptions. Carefully review your code and check for any of these issues.

2. Why is my Java code not producing the expected output?

There are a few possible reasons for this. One possibility is that there is a logic error in your code, causing it to produce incorrect results. Another possibility is that your code is not properly handling unexpected input or edge cases. Debugging tools and techniques can help you identify and fix these issues.

3. Why does my Java code keep crashing?

If your Java code is crashing, it is likely due to an unhandled exception or error. This could be caused by a variety of factors, such as incorrect data types, memory leaks, or infinite loops. Using debugging tools and writing robust error handling can help prevent crashes in your code.

4. How can I improve the performance of my Java code?

There are a few ways to improve the performance of Java code. One is to use efficient algorithms and data structures. Another is to minimize the number of operations and function calls in your code. You can also use profiling tools to identify and optimize any bottlenecks in your code.

5. Why is my Java code not compiling?

If your Java code is not compiling, it could be due to syntax errors, missing or incorrect imports, or using features from a newer version of Java that is not supported by your compiler. Check your code for any of these issues and make sure you are using a compatible compiler for your code.

Similar threads

  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
8
Views
1K
  • Programming and Computer Science
Replies
8
Views
1K
  • Programming and Computer Science
Replies
1
Views
752
  • Programming and Computer Science
Replies
1
Views
945
  • Programming and Computer Science
2
Replies
36
Views
3K
  • Programming and Computer Science
Replies
22
Views
2K
  • Programming and Computer Science
Replies
5
Views
1K
  • Programming and Computer Science
Replies
1
Views
647
  • Programming and Computer Science
Replies
2
Views
638
Back
Top