简体   繁体   中英

Need help on Trapezoidal Rule Java code

Need help... I tried running the code for trapezoidal rule. It's my project in Numerical Methods, here's the code:

static double trapezoidRule (int size, double[] x, double[] y)
   {  double sum = 0.0,
             increment;

      for ( int k = 1; k < size; k++ )
      {//Trapezoid rule:  1/2 h * (f0 + f1)
         increment = 0.5 * (x[k]-x[k-1]) * (y[k]+y[k-1]);
         sum += increment;
      }
      return sum;
   }

   public static void main ( String[] args ) throws Exception
   {  String   fileName = args.length > 0 ? args[0] : "InpData.txt";
      Scanner  inp = new Scanner(new File(fileName));
      int      k, size;
      double[] x, y;
      double   integral;

      size = inp.nextInt();
      System.out.println ("Number of points:  " + size);

      x = new double[size];
      y = new double[size];

      for ( k = 0; k < size; k++ )
      {  x[k] = inp.nextDouble();
         y[k] = inp.nextDouble();
      }
      integral = trapezoidRule (size, x, y);
      System.out.printf ("Integral:  %4.4f\n", integral);
      System.out.printf ("Check:  log(%2.2f) = %8.8f\n",
                         x[size-1], Math.log(x[size-1]) );
   }
}

It cannot be compiled and I always get FileNotFoundException. I found on Javadocs that this will be thrown when a file with the pathname does not exist. Please help. Thanks!

Probably InpData.txt is not in your working directory. The simplest solution: try to put full path to the file, not just the name. Eg: "C:\\\\somefiles\\\\...\\\\InpData.txt"

Where is the file InpData.txt?

Place a breakpoint and debug new File(fileName).getAbsolutePath() to see where it should be. Place your file there.

Don't hard-code the path if you want the code to be portable (if it is being executed on another machine).

It is runtime error - your file "InpData.txt" may not be in your working directory. Try to put full path or move file to your working directory.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM