J'essaie de créer une calculatrice intégrale qui affiche un polynôme aléatoire, un intervalle aléatoire et l'intégrale définie de ce polynôme de l'intervalle aléatoire.Array Index Fonctionne dans JApplet mais pas JFrame
J'ai déjà écrit le code avec l'objectif final d'afficher la réponse sur un JApplet, mais maintenant, après quelques complications, je dois maintenant afficher ma réponse sur JFrame.
Ce qui suit est ma classe intégrale
package poopeep;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class Integral
{
public Integral()
{
generator = new Random();
degree = generator.nextInt(5)+1;
left = generator.nextInt(11);
right = generator.nextInt(11) + left + 1;
xlist = new ArrayList<Integer>();
}
public double calc()
{
double interval = right - left;
double dx = interval/10000000;
double area = 0;
// Generates random coefficients
for (int d = 0; d <= degree; d++)
{
int coeff = generator.nextInt(21) - 10;
xlist.add(coeff);
}
for (double i = left; i < right; i += dx)
{
double x = i + dx/2;
for (int d = degree; d >= 0; d--)
{
double areaOfSingleRect = (xlist.get(d) * Math.pow(x, d)) * dx;
area += areaOfSingleRect;
}
}
DecimalFormat round = new DecimalFormat("##.##");
round.setRoundingMode(RoundingMode.DOWN);
return Double.parseDouble(round.format(area));
}
public String getEquation()
{
String equation = "";
for (int d = degree; d >= 0; d--)
{
equation = equation + String.valueOf(xlist.get(d)) + "x^" + String.valueOf(d) + " + ";
}
return equation;
}
public String getLeft()
{
String leftString = String.valueOf(left);
return leftString;
}
public String getRight()
{
String rightString = String.valueOf(right);
return rightString;
}
private int left;
private int right;
private int degree;
private Random generator;
private List<Integer> xlist;
}
Ce qui suit est ma classe de test
package poopeep;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JApplet;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class IntegralTest extends JApplet
{
public static void main(String[] args)
{
Integral myIntegral = new Integral();
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,600);
frame.setTitle("Integral");
frame.setVisible(true);
JPanel panel = new JPanel();
// JLabel bounds = new JLabel("From " + myIntegral.getLeft() + " to " + myIntegral.getRight());
// JLabel answer = new JLabel(String.valueOf(myIntegral.calc()));
JLabel equation = new JLabel(myIntegral.getEquation());
// panel.add(bounds);
// panel.add(answer);
panel.add(equation);
frame.add(panel);
}
}
Désolé pour le code désordre, les importations non utilisées, etc.
Dans ma classe de test, J'ai fondamentalement commenté le code JFrame et laissé le code JApplet en cours d'exécution. Lorsque j'exécute le programme avec le code JApplet, le programme fonctionne parfaitement comme je le souhaite.
Cependant, quand je passer à l'aide du code JFrame (et je transmets JComponent en classe intégrale, etc.) Eclipse me donne une erreur disant que mes index de liste, ligne 59, sont hors d'usage, même si Je n'ai rien changé dans la classe Integral.
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at poopeep.Integral.getEquation(Integral.java:59)
at poopeep.IntegralTest.main(IntegralTest.java:27)
Quel est le problème? Merci
Postez le code qui ne fonctionne pas, pas le code qui fonctionne. Supprimez tout le code non pertinent. Et ne paraphrasez pas les messages d'erreur. Postez-les, mot pour mot, complètement. –