2017-02-14 55 views
1

我想知道为什么我的计算器应用程序的输出给我这个消息?矩形计算器应用程序

message

这可能是一些简单的我似乎总是过目。我认为这可能是输出有错误的EditTexts或解析我不需要的东西。除了将数字限制在小数点后两位,我可以找到解决办法,但我想我会问。任何提示,将不胜感激,仍然是Android编程新手。

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

这是我的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

尽量在你要问 –

回答

1

您要为编辑文本,你的情况的面积和周长设置错误文本

使用

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

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

,而不是

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

的意见和area1和per imeter1是计算值

+0

感谢这么多有什么更具体的!我知道这很简单。要设置字段以允许小数,我将不得不将Int更改为double? – jake

+0

是的,将它改为双倍 – Redman

+0

没关系我明白了,我的错误,很抱歉打扰。 – jake

1

你行如area.setText(String.valueOf(area));是设置文本对象的名称。

3

您的听众不应该在您的计算按钮而不是该视图?这样

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

       } 
      }); 

和东西还你设置TextView的与错误的值和解析错误的变量,尝试:

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