android - 乘以零,加倍没有数字

标签 android double

我正在尝试为 android 构建一个计算器,我正在尝试将两个数字相乘。 如果我给出数字 1 并让数字 2 保持打开状态,我希望得到零作为答案。

我一开始以为可能是double没有值的问题。 所以我尝试了: if (Double.isNaN(number1)) { number1=0; } 但它没有用。

我该如何做到这一点?

R.layout.main:

         <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<!-- 1 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="number:" />
    <EditText
        android:id="@+id/number1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="0"
        android:inputType="number"
        android:layout_marginLeft="20dp" />
</LinearLayout>

<!-- 2 -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="number:" />
    <EditText
        android:id="@+id/number2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="0"
        android:inputType="number"
        android:layout_marginLeft="20dp" />
</LinearLayout>


<!-- multiply -->   
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp"  >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="multiply:" />
    <TextView
        android:id="@+id/multiplydisplay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:layout_marginLeft="20dp" />
</LinearLayout>


<Button
    android:id="@+id/btncalculate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Calculate"/>

<Button
    android:id="@+id/btnreset"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Reset" />

     </LinearLayout>

TipcalcActivity.java

package com.tip.calc;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Button;
import android.view.View;


    public class TipcalcActivity extends Activity   {
private EditText number1;
private EditText number2;
private TextView multiplydisplay;
private Button btncalculate;
private Button btnreset;
private double number1calc = 0;
private double number2calc = 0;
private double multiply     = 0;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initControls();
}

private void initControls() {
    number1 = (EditText)findViewById(R.id.number1);
    number2 = (EditText)findViewById(R.id.number2);
    multiplydisplay = (TextView)findViewById(R.id.multiplydisplay);
    btncalculate = (Button)findViewById(R.id.btncalculate);
    btnreset = (Button)findViewById(R.id.btnreset);
    btncalculate.setOnClickListener(new Button.OnClickListener() { public void 
     onClick (View v){ calculate(); }});
    btnreset.setOnClickListener(new Button.OnClickListener() { public void   
  onClick (View v){ reset(); }});
}

private void calculate()    {
    number1calc=Double.parseDouble(number1.getText().toString());
    number2calc=Double.parseDouble(number2.getText().toString());
    multiply=(number1calc*number2calc);
    multiplydisplay.setText(Double.toString(multiply));
}

private void reset()    {
    multiplydisplay.setText("");
    number1.setText("");
    number2.setText("");
}
}

最佳答案

您应该只检查值的文本字段的内容是否与“”不同。如果不是,就赋值为0。

在计算中:

private void calculate()    {
    number1calc=(number1.getText().toString() != "" ) ? Double.parseDouble(number1.getText().toString()) : 0;
    number2calc=(number2.getText().toString() != "" ) ? Double.parseDouble(number2.getText().toString()) : 0;
    multiply=(number1calc*number2calc);
    multiplydisplay.setText(Double.toString(multiply));

关于android - 乘以零,加倍没有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8865772/

相关文章:

java - 从 Android 月份重新排列 ArrayList

android - 在 Firebase RecyclerView 中添加或删除子项时出现重复列表行

android - 无法创建任务以上传 Proguard 映射文件.java.lang.IllegalStateException : Resolving configuration 'androidTestAnnotationProcessor'

javascript - 在提示之外获取循环的所有起点和终点

c - C中的double到int的转换

c - 输出与 c 中的代码不匹配(双变量)

java - 为什么使用条件编译后 apk 大小相同

java - Android将单个.java文件编译为.class

java - 如何在java printf中保留数字符号?

c++ - 在 C++ 中找到最小值(双)