Closed GoogleCodeExporter closed 9 years ago
I wrote a practice app that solves quadratic equations and now I want to have the option to graph them with a button. Yet when I press the button the application crashes. Here is the code for the main program and the graphing one(located beneath): Main class: *note: I do have the necessary classes inmported and the .jar. package com.test.quad; import java.text.DecimalFormat; import java.util.List; import android.util.Log; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class QuadraticActivity extends Activity { Button reset; Button solve; Button grapher; TextView labela1; TextView b1label; TextView c1label; TextView result1; TextView result2; EditText a1; EditText b1; EditText c1; public List<double[]> x,y; public double a, b, c; public double xStart = 0, xEnd = 0; public double xCurrent; double yCurrent; public double xStep; public int count = 100; Graph g = new Graph(); /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); labela1 = (TextView)this.findViewById(R.id.labela1); b1label = (TextView)this.findViewById(R.id.b1label); c1label = (TextView)this.findViewById(R.id.c1label); result1 = (TextView)this.findViewById(R.id.result1); result2 = (TextView)this.findViewById(R.id.result2); a1 = (EditText)this.findViewById(R.id.a1); b1 = (EditText)this.findViewById(R.id.b1); c1 = (EditText)this.findViewById(R.id.c1); solve = (Button)this.findViewById(R.id.solve); reset = (Button)this.findViewById(R.id.reset); grapher = (Button)this.findViewById(R.id.grapher); } public void onClickHandler(View v) { switch(v.getId()){ case R.id.reset: a1.setText(""); b1.setText(""); c1.setText(""); result1.setText(""); result2.setText(""); a=0; b=0; c=0; break; case R.id.solve: solveEquation(); break; case R.id.grapher: Intent achartIntent = new Graph().execute(this); startActivity(achartIntent); Log.d("debug", "clicked" ); break; } } protected void solveEquation() { try{ a = Double.parseDouble(a1.getText().toString()); b = Double.parseDouble(b1.getText().toString()); c = Double.parseDouble(c1.getText().toString()); } catch (NumberFormatException exception) { result1.setText("Please enter a number"); result2.setText(" "); } finally{} if (a==0 && b==0 && c==0){ result1.setText(" "); result2.setText(" "); } else{ double yy, xx,x1, x2, x3; double disc = (( b * b) - (4 * a * c)); DecimalFormat fmt = new DecimalFormat("0.###"); if (disc > 0){ double solution1 = ((-1 * b) - Math.sqrt(disc)) / ( 2 * a); double solution2 = ((-1 * b) + Math.sqrt(disc)) / (2 * a); result1.setText("Solution #1: " + fmt.format(solution1)); result2.setText("Solution #2: " + fmt.format(solution2)); if (solution1 < solution2){ xStart = solution1 - 5; xEnd = solution2 + 5; } else{ xStart = solution2 - 5; xEnd = solution1 + 5; } } else if (disc == 0){ double oneSol = (-1 * b) / ( 2 * a); result1.setText("One Solution: " + fmt.format(oneSol)); result2.setText(""); xStart = oneSol - 5; xEnd = oneSol + 5; } else{ yy = (-1 * b) / (2 * a); xx = ((b * b) - (4 * a * c)); x1 = Math.abs(xx); x2 = Math.sqrt(x1); x3 = (x2) / (2 * a); result1.setText("Imaginary Solution #1: " + fmt.format(yy) + " - " + fmt.format(x3)+"i" ); result2.setText("Imaginary Solution #2: " + fmt.format(yy) + " + " + fmt.format(x3)+"i" ); xStart = (((-1 * b) - (x2)) / ( 2 * a)) - 5; xEnd = (((-1 * b) + (x2)) / (2 * a)) + 5; } } } } and the graph code: package com.test.quad; import java.util.ArrayList; import java.util.List; import org.achartengine.ChartFactory; import org.achartengine.chart.PointStyle; import org.achartengine.renderer.XYMultipleSeriesRenderer; import android.content.Context; import android.content.Intent; import android.graphics.Color; /** * Quadratic */ public class Graph extends AbstractDemoChart { /** * Returns the chart name. * @return the chart name */ public String getName() { return "Quadratic Functions"; } /** * Returns the chart description. * @return the chart description */ public String getDesc() { return "Quadratic Graph"; } /** * Executes the chart demo. * @param context the context * @return the built intent */ public Intent execute(Context context) { String[] titles = new String[] { "Function" }; List<double[]> x = new ArrayList<double[]>(); List<double[]> values = new ArrayList<double[]>(); QuadraticActivity c = new QuadraticActivity(); double range = c.xEnd - c.xStart; double step = .01 * range; int count = 110; double xCurrent = c.xStart; double[] xValueArr = new double[count]; double[] yValueArr = new double[count]; values.add(xValueArr); values.add(yValueArr); for (int ii=0; xCurrent <= c.xEnd; xCurrent += step, ii++) { double yCurrent = (c.a)*Math.pow(xCurrent, 2) + (c.b)*xCurrent + (c.c); xValueArr[ii] = xCurrent; yValueArr[ii] = yCurrent; } System.out.println(x); int [] colors = new int[] { Color.BLUE }; PointStyle[] styles = new PointStyle[] { PointStyle.POINT }; XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles); setChartSettings(renderer, "Graph of Quadratic Equation", "X", "Y", 0, 360, -1, 1, Color.GRAY, Color.LTGRAY); renderer.setXLabels(20); renderer.setYLabels(10); return ChartFactory.getLineChartIntent(context, buildDataset(titles, x, values), renderer); } }
Original issue reported on code.google.com by Okelly4...@gmail.com on 16 Aug 2011 at 10:53
Okelly4...@gmail.com
Not compilable code.
Original comment by dandrome...@gmail.com on 23 Aug 2011 at 12:20
dandrome...@gmail.com
Original issue reported on code.google.com by
Okelly4...@gmail.com
on 16 Aug 2011 at 10:53