错误的输出,但正确的公式 - 使用用户输入进行除法

问题描述

我正在尝试制作一个简单的转换应用程序。我返回的代码编号不正确。等式看起来像 16/16,应该是 =1。它给我带来了 1.3 和更多的数字。关于我可能出错的地方有什么想法吗?如果你想看看它,下面是我的代码我对该应用的输入是 16 盎司到 1 磅。我感谢任何可用的见解。

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="97dp"
        android:layout_height="59dp"
        android:background="#E6E6E6"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.831"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.471" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="97dp"
        android:layout_height="59dp"
        android:background="#E6E6E6"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.831"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.309" />

    <Button
        android:id="@+id/button"
        android:layout_width="123dp"
        android:layout_height="53dp"
        android:text="@string/convert"
        app:backgroundTint="#3C3838"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.598" />

    <EditText
        android:id="@+id/enteramount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:ems="10"
        android:inputType="numberDecimal"
        android:textAlignment="center"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/spinner1"
        app:layout_constraintHorizontal_bias="0.651"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.323"
        tools:text="Enter Amount" />

    <EditText
        android:id="@+id/textAnswer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Conversion"
        android:textAlignment="center"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.138" />


</androidx.constraintlayout.widget.ConstraintLayout>

主要

package com.stproductions.commonconverter;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.lang.reflect.Array;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = findViewById(R.id.button);
        final TextView[] txtAnswer = {findViewById(R.id.textAnswer)};
        txtAnswer[0].setVisibility(View.INVISIBLE);
        double enteranswer = Double.parseDouble(String.valueOf(R.id.enteramount));


        //Convert From Box
        Spinner spinner1 = findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence>adapter1 = ArrayAdapter.createFromresource(this,R.array.fromchoices,android.R.layout.simple_spinner_item);
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spinner1.setAdapter(adapter1);


        //Convert To Box
        Spinner spinner2 = findViewById(R.id.spinner2);
        ArrayAdapter<CharSequence>adapter = ArrayAdapter.createFromresource(this,R.array.choices,android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
        spinner2.setAdapter(adapter);

                    //   oz    lb      g       kg         ton        mg
        double[] ounce = {1,0.0625,28.35,0.0283495,0.00003125,28349.5};
        double[] pound = {16,1,453.59,0.453592,0.0005,453592};
        double[] gram = {0.35274,0.0022,0.001,0.000001,1000};
        double[] kilogram = {35.274,2.2,1000,0.00110231,1000000};
        double[] ton = {32000,2000,907185,907.185,907184740};
        double[] milligram = {0.000035,0.000002,0.0000001,0.000000001,1};


        btn.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (spinner1.getSelectedItem() != null && spinner2.getSelectedItem() != null) {
                    String first_option = spinner1.getSelectedItem().toString();
                    String second_option = spinner2.getSelectedItem().toString();

                    if (first_option.contentEquals("oz") && second_option.contentEquals("lb")) {

                        double finishConversion = enteranswer / pound[0];
                        String str = Double.toString(finishConversion);

                        txtAnswer[0].setVisibility(View.VISIBLE);

                        txtAnswer[0].setText(str);

                    } else {

                    }
                }
            }
        });
    }
}

字符串

<resources>
    <string name="app_name">Common Converter</string>
    <string name="convert">Convert</string>

    <string-array name="choices">
            <item>lb</item>
            <item>oz</item>
            <item>g</item>
            <item>kg</item>
            <item>ton</item>
            <item>mg</item>
        </string-array>

    <string-array name="fromchoices">
        <item>lb</item> 
        <item>oz</item> 
        <item>g</item> 
        <item>kg</item> 
        <item>ton</item> 
        <item>mg</item> 
    </string-array>

</resources>

解决方法

您对以下内容的更改有何看法

double enterAnswer = Double.parseDouble(String.valueOf(R.id.enterAmount));

to

EditText amount = findViewById(R.id.enterAmount)
double enterAnswer = Double.parseDouble(enterAnswer.getText());

我很确定你的其余代码没问题,所以我认为 String.valueOf(R.id.enterAmount) 给了你一个奇怪的值。