2017-02-14 5 views
1

Ich habe mich gefragt, warum meine Ausgabe auf meiner Taschenrechner App mir diese Nachricht gibt?Rectangle Calculator App

message

Es ist wahrscheinlich etwas einfach, dass ich scheine immer über aussehen. Ich dachte, es könnte die Ausgabe sein, die die falschen EditTexts hat oder Dinge parst, die ich nicht brauche. Neben der Beschränkung auf zwei Dezimalstellen kann ich eine Lösung finden, aber ich dachte, ich würde trotzdem fragen. Irgendwelche Hinweise würden geschätzt werden, immer noch ziemlich neu in der Android-Programmierung.

package com.filej.calculatorapp; 
    import android.support.v4.media.MediaBrowserServiceCompat; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.TextView; 
    public class CalculatorApp extends AppCompatActivity` { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_calculator_app); 

     EditText heightEdit = (EditText) findViewById(R.id.heightEdit); 
     EditText widthEdit = (EditText) findViewById(R.id.widthEdit); 
     TextView area = (TextView) findViewById(R.id.areaTextView); 
     TextView perimeter = (TextView) findViewById(R.id.perimeterTextView); 

     Button calculate = (Button) findViewById(R.id.calculateButton); 

     View view = findViewById(R.id.calculateButton); 
     view.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       EditText height = (EditText) findViewById(R.id.heightEdit); 
       EditText width = (EditText) findViewById(R.id.widthEdit); 
       calculateArea(height.getText().toString(), width.getText().toString()); 
       calculatePerimeter(height.getText().toString(), width.getText().toString()); 

      } 
     }); 


    } 

    private void calculateArea(String cHeight, String cWidth) 
    { 
     TextView area = (TextView) findViewById(R.id.areaTextView); 
     int area1 = Integer.parseInt(Height)* Integer.parseInt(Width); 
     area.setText(String.valueOf(area)); 
    } 
    private void calculatePerimeter (String dHeight, String dWidth) 
    { 
     TextView perimeter = (TextView) findViewById(R.id.perimeterTextView); 
     int perimeter1 = (Integer.parseInt(Height) * 2) + (Integer.parseInt(Width) * 2); 
     perimeter.setText(String.valueOf(perimeter)); 
    } 
    } 

Das ist mein XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_calculator_app" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.filej.calculatorapp.CalculatorApp"> 

    <TextView 
     android:text="Width" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="33dp" 
     android:id="@+id/textView2" /> 

    <TextView 
     android:text="Height" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="40dp" 
     android:id="@+id/textView" 
     android:layout_below="@+id/textView2" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:text="Area" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="81dp" 
     android:id="@+id/textView3" 
     android:layout_below="@+id/textView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="41dp" 
     android:id="@+id/textView4" 
     android:layout_below="@+id/textView3" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:text="Perimeter" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number|numberDecimal" 
     android:ems="10" 
     android:id="@+id/widthEdit" 
     android:layout_alignBaseline="@+id/textView2" 
     android:layout_alignBottom="@+id/textView2" 
     android:layout_centerHorizontal="true" 
     android:singleLine="false" 
     android:text="Enter Width" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number|numberDecimal" 
     android:ems="10" 
     android:id="@+id/heightEdit" 
     android:text="Enter Height" 
     android:layout_alignBaseline="@+id/textView" 
     android:layout_alignBottom="@+id/textView" 
     android:layout_alignLeft="@+id/widthEdit" 
     android:layout_alignStart="@+id/widthEdit" /> 

    <TextView 
     android:text="Total Area" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/textView3" 
     android:layout_alignLeft="@+id/heightEdit" 
     android:layout_alignStart="@+id/heightEdit" 
     android:id="@+id/areaTextView" 
     android:layout_alignRight="@+id/heightEdit" 
     android:layout_alignEnd="@+id/heightEdit" /> 

    <TextView 
     android:text="Total Perimeter" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/perimeterTextView" 
     android:layout_alignBaseline="@+id/textView4" 
     android:layout_alignBottom="@+id/textView4" 
     android:layout_alignLeft="@+id/areaTextView" 
     android:layout_alignStart="@+id/areaTextView" 
     android:layout_alignRight="@+id/areaTextView" 
     android:layout_alignEnd="@+id/areaTextView" /> 

    <Button 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView4" 
     android:layout_toRightOf="@+id/textView2" 
     android:layout_toEndOf="@+id/textView2" 
     android:layout_marginTop="52dp" 
     android:id="@+id/calculateButton" /> 

</RelativeLayout> 
+1

Versuchen genauer zu sein, was Sie wollen so viel –

Antwort

1

Sie setzen falschen Text für Text bearbeiten

Verwendung

area.setText(String.valueOf(area1)); 

und

perimeter.setText(String.valueOf(perimeter1)); 

statt

area.setText(String.valueOf(area)); 
    perimeter.setText(String.valueOf(perimeter)); 

in Ihrem Fall Fläche und Umfang sind Ansichten und Bereich1 und per imeter1 sind berechnete Werte

+0

Dank fragen! Ich wusste, dass es so einfach war. Um die Felder so zu setzen, dass Dezimalzahlen möglich sind, müsste ich Int in Double umwandeln? – jake

+0

ja, ändere es zu double – Redman

+0

Vergiss es ich habe es, mein Fehler, tut mir leid zu stören. – jake

1

Ihre Linie wie area.setText(String.valueOf(area)); ist, den Text auf den Namen des Objekts einstellen.

3

Sollte sich Ihr Listener nicht auf Ihrer Berechnungsschaltfläche befinden? So etwas wie dieses

calculate = (Button) findViewById(R.id.calculateButton); 
      calculate.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        EditText height = (EditText) findViewById(R.id.heightEdit); 
        EditText width = (EditText) findViewById(R.id.widthEdit); 
        calculateArea(height.getText().toString(), width.getText().toString()); 
        calculatePerimeter(height.getText().toString(), width.getText().toString()); 

       } 
      }); 

und auch Sie zum Textview mit falschen Wert und Parsen falsch variable Einstellung, versuchen:

private void calculateArea(String cHeight, String cWidth) 
{ 
    TextView area = (TextView) findViewById(R.id.areaTextView); 
    int area1 = Integer.parseInt(cHeight)* Integer.parseInt(cWidth); 
    area.setText(String.valueOf(area1)); 
} 
private void calculatePerimeter (String dHeight, String dWidth) 
{ 
    TextView perimeter = (TextView) findViewById(R.id.perimeterTextView); 
    int perimeter1 = (Integer.parseInt(dHeight) * 2) + (Integer.parseInt(dWidth) * 2); 
    perimeter.setText(String.valueOf(perimeter1)); 
}