Java 矩形计算器应用程序

Java 矩形计算器应用程序,java,android,Java,Android,我想知道为什么我的计算器应用程序上的输出会给我这个消息 这可能是一些我经常看的简单的东西。我想可能是输出有错误的编辑文本,或者解析了我不需要的东西。除了将数字限制在小数点后两位之外,我还可以找到一个解决方案,但我想我还是会问的。任何提示都将不胜感激,对于android编程来说还是相当新鲜的 package com.filej.calculatorapp; import android.support.v4.media.MediaBrowserServiceCompat;

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

这可能是一些我经常看的简单的东西。我想可能是输出有错误的编辑文本,或者解析了我不需要的东西。除了将数字限制在小数点后两位之外,我还可以找到一个解决方案,但我想我还是会问的。任何提示都将不胜感激,对于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



您的行,例如
area.setText(String.valueOf(area))
正在将文本设置为对象的名称。

您的行,例如
区域.setText(String.valueOf(area))正在将文本设置为对象的名称。

您为编辑文本设置了错误的文本

使用

而不是

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

在本例中,面积和周长是视图,面积1和周长1是计算值

您为编辑文本设置了错误的文本

使用

而不是

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

在您的示例中,面积和周长是视图,面积1和周长1是计算值

您的侦听器不应该在计算按钮上而不是在该视图上吗?像这样的

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

您的侦听器不应该在您的计算按钮上而不是该视图上吗?像这样的

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

试着更具体地问你想问什么。试着更具体地问你想问什么。谢谢!我知道事情很简单。要设置允许小数的字段,我必须将Int更改为double?最后一个问题,如果是double,如何将其格式设置为四舍五入到小数点后2位?因为我知道如何执行String.format(“%s,object”)是以字符串形式执行的一种方法。我想知道有没有办法用双人床?看看吧,非常感谢!我知道事情很简单。要设置允许小数的字段,我必须将Int更改为double?最后一个问题,如果是double,如何将其格式设置为四舍五入到小数点后2位?因为我知道如何执行String.format(“%s,object”)是以字符串形式执行的一种方法。我想知道有没有办法用双人床?看看