Android:许多错误消息无效

时间:2014-09-21 17:41:08

标签: java android eclipse exception

我正在编写应用程序,但我总是收到此错误消息:Void方法无法返回值 并且:令牌上的语法错误,错放的构造(s) 关于公共字符串 我该如何解决这个问题?

public void onClickGleichungAusrechnen(View view){
TextView tv = (TextView)findViewById(R.id.textView2);
TextView tv2 = (TextView)findViewById(R.id.textView3);


  // beschreibt a*x^2 + b*x + c = 0

  double a;
  double b;
  double c;

  double a1;
  double b1;
  double c1;

    a = a1;
    b = b1;
    c = c1;

 public String toSignedString(double d){
    // erzeugt String mit explizitem Vorzeichen
    if (d >= 0) {
      return("+ " + d);
    } else {
      return("- " + (-d));
    }
 }


  public String toString() {
    // erzeugt Textdarstellung der quadratischen Gleichung
    String s = a + "*x^2 "+ toSignedString(b) + "*x "
                + toSignedString(c);
    return s;
  }

  private double discriminant() {
    // die Diskriminante der Gleichung
    return(b*b/(4*a*a) - c/a);
  }


  private double[] getLinearSolution() {
    // gib die Lösung der linearen Gleichung zurück
    double[] result;

    if (b != 0.0) {
      // Normalfall der linearen Gleichung
      result = new double[1];
      result[0] = -c/b;
    } else if (c != 0) {
      // Gleichung lautet einfach c = 0, aber c != 0
      // Widerspruch, also keine Lösungen
      result = new double[0];
    } else {
      // b und c sind 0, die Gleichung lautet 0*x = 0
      // alle Zahlen sind Lösung
      // man kann aber nicht alle Zahlen zurückgeben!
      // Notlösung: eine Lösung ausgeben und Warnungsmeldung dazu

      tv.setText("WARNUNG: Gleichung 0*x = 0, alle x sind Lösung!");
      result = new double[1];
      result[0] = 1.0;
    }
    return result;
  }

  public double[] getSolution() {
    // gibt Vektor mit den Lösungen zurueck
    // berücksichtigt auch a = 0

    if (a == 0.0) {
      // lineare Gleichung, verwende entsprechende Lösungsroutine
      return getLinearSolution();
    }

    // hier ist klar: a != 0
    double a1 = -b/(2*a);
    double d = discriminant();
    double[] result;

    if (d > 0) {
      result = new double[2];
      double dRoot = Math.sqrt(d);
      result[0] = a1 + dRoot;
      result[1] = a1 - dRoot;
    } else if (d == 0) {
      result = new double[1];
      result[0] = a1;
    } else {
      // d < 0: es gibt keine (reelle) Lösung
      result = new double[0];
    }

    return(result);
  }

  public void main(String[] args) throws IOException {

    MainActivity qe1 = null;

    // hole die Koeffizienten vom Benutzer

    TextView tv = (TextView)findViewById(R.id.textView2);
    TextView tv2 = (TextView)findViewById(R.id.textView3);
    TextView tv3 = (TextView)findViewById(R.id.textView4);
    TextView tv4 = (TextView)findViewById(R.id.textView5);
    EditText ed1 = (EditText)findViewById(R.id.EditText01); 
    EditText ed2 = (EditText)findViewById(R.id.EditText02);
    EditText ed3 = (EditText)findViewById(R.id.editText1);

    float edz1 = Float.valueOf(ed1.getText().toString());
    float edz2 = Float.valueOf(ed2.getText().toString());       
    float edz3 = Float.valueOf(ed3.getText().toString());   


    qe1 = new MainActivity(edz1, edz2, edz3);

    tv.setText("Die quadratische Gleichung " + qe1);

    double[] result = qe1.getSolution();
    int      count =  result.length;
    tv2.setText("hat " + count + " Lösungen");

    if (count > 0) {
      tv3.setText("" + result[0]);
    }
    if (count > 1) {
        tv4.setText("" + result[1]);
    }
  }
}

如果你可以帮助我,那会很酷,因为我解决了最后一个错误,但现在我迷失了!

谢谢, 多米尼克

PS:请原谅我的英语不好,我尽了最大努力:)

3 个答案:

答案 0 :(得分:1)

 java.lang.InstantiationException: can't instantiate class com.themrdomi.ha_loeser.MainActivity; no empty constructor

摆脱你的构造函数。不要在Activity上实现构造函数,因为它永远不会被使用。

答案 1 :(得分:0)

MainActivity应将Activity类扩展为:

 public class MainActivity extends Activity
 {
   @override
   public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
 }

 }

然后实现您选择的功能。

答案 2 :(得分:0)

删除下面的构造函数并替换为适当的setter

  //constructor 


public MainActivity(double a1, double b1, double c1) {
        // erzeuge neue Gleichung mit gegebenen Koeffizienten
        a = a1;
        b = b1;
        c = c1;
      }

    //setter

        public void setData(double a1, double b1, double c1)
        {
            this.a = a1;
            this.b = b1;
            this.c = c1;
        }