2011-08-16 2 views
0

에서 호출 될 때 나는 2 차 방정식을 풀어내는 버튼을 사용하여 그래프를 그릴 수있는 연습 응용 프로그램을 작성했습니다. 그러나 버튼을 누르면 응용 프로그램이 충돌합니다. 다음은 메인 프로그램과 그래프를위한 코드입니다 (아래에 있습니다) : 메인 클래스 : * 참고 : 필자는 필요한 클래스를 가져 와서 .jar 파일을 가지고 있습니다. 안드로이드 어플 리케이션 충돌 achartengine 그래프가

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; 
     } 


    } 
    } 

    } 

그래프 코드 :

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);  
} 

} 
+0

는 적어도 일들이 충돌, 스택 추적 및 오류 메시지를 보여줍니다. 어떻게하면 아무 것도없이 당신을 도울 수있는 방법은 무엇입니까? –

답변

2

매니페스트 파일로 활동 GraphicalActivity를 추가

<activity android:name="org.achartengine.GraphicalActivity" /> 
관련 문제