问题描述
我正在尝试制作一个简单的转换应用程序。我返回的代码编号不正确。等式看起来像 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)
给了你一个奇怪的值。