умножить на ноль, двойное число без - PullRequest
1 голос
/ 15 января 2012

Я пытаюсь построить калькулятор для Android, я пытаюсь умножить два числа. Если я даю номер 1 и оставляю номер 2 открытым, я хочу получить ноль в качестве ответа.

Сначала я подумал, что это может быть проблемой отсутствия значения для двойника. Поэтому я попытался: 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("");
}
}

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Вы должны просто проверить, что содержимое текстового поля значения отличается от "". Если нет, просто присвойте значение 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));

}

1 голос
/ 15 января 2012
if(numberOne.getText().toString().trim().length() < 1 || numberTwo.getText().toString().length() < 1){
    multiplyDisplay.setText("0");
}
else{
    //default handling
}

Если текст редактирования оставлен пустым, это, очевидно, не число (NaN).Выполнение любой операции с NaN в Java приведет к тому, что результатом этой операции будет NaN.

...