如何在 Android Studio 的 EditText 中填充浮点数和整数
Posted
技术标签:
【中文标题】如何在 Android Studio 的 EditText 中填充浮点数和整数【英文标题】:How to fill in float and integer in EditText in AndroidStudio 【发布时间】:2020-08-04 11:04:20 【问题描述】:我正在尝试在我的应用程序的 EditText 字段中填写一个整数和一个浮点数。但是我的应用总是崩溃。
这就是我的 XML 的样子
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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_
android:layout_
android:orientation="vertical"
tools:context=".MainActivity">
<EditText
android:id="@+id/int_LA"
android:layout_
android:layout_
android:ems="10"
android:hint="LA"
android:inputType="number|numberDecimal" />
<EditText
android:id="@+id/int_LB"
android:layout_
android:layout_
android:ems="10"
android:inputType="number|numberDecimal"
android:hint="LB"
android:layout_below="@id/int_LA"/>
</LinearLayout>
这是我的 JAVA 代码
package com.example.plaatuitslagberekenen;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import static android.text.InputType.*;
public class MainActivity extends AppCompatActivity
Button button;
TextView result;
EditText int_LA, int_LB, int_LC, int_t, int_Ri_x, int_Ri_y;
double result_num;
double int_LA_num, int_LB_num, int_LC_num, int_t_num, int_Ri_x_num, int_Ri_y_num;
double k_factor;
double BA_1;
double BA_2;
double OneThirdth = 0.333333333;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = (TextView)findViewById(R.id.result);
int_LA = (EditText)findViewById(R.id.int_LA);
int_LA.setInputType(TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL);
int_LB = (EditText)findViewById(R.id.int_LB);
int_LC = (EditText)findViewById(R.id.int_LC);
int_t = (EditText)findViewById(R.id.int_t);
int_Ri_x = (EditText)findViewById(R.id.int_Ri_x);
int_Ri_y = (EditText)findViewById(R.id.int_Ri_y);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
//BA_1 = (double) (Math.PI / 180) * int_Ri_x_num * (double) (int_t_num + 0.33 * int_t_num );
int_LA_num = Integer.parseInt(int_LA.getText().toString());
int_LB_num = Integer.parseInt(int_LB.getText().toString());
int_LC_num = Integer.parseInt(int_LC.getText().toString());
int_t_num = Integer.parseInt(int_t.getText().toString());
int_Ri_x_num = Integer.parseInt(int_Ri_x.getText().toString());
int_Ri_y_num = Integer.parseInt(int_Ri_y.getText().toString());
//result_num = (int_t_num) + int_LC_num + int_LA_num + int_LB_num + int_Ri_x_num + int_Ri_y_num + k_factor;
result_num = ((int_LA_num - int_t_num) + (int_LB_num - (int_t_num * 2)) + (int_LC_num - int_t_num) + ((OneThirdth * int_t_num) / 90) * (int_Ri_x_num) + ((OneThirdth * int_t_num) / 90) * (int_Ri_y_num));
System.out.println(((OneThirdth * int_t_num) / 90) * (int_Ri_x_num));
result.setText(String.format("%.1f", result_num));
);
我希望 LA_num 有时是浮点数,有时是整数。我如何在这段代码中转换它。
编辑:
result_num = ((int_LA_num - int_LB_num)
EDIT_2:
添加“int_LA.setInputType(TYPE_CLASS_NUMBER | TYPE_NUMBER_FLAG_DECIMAL);”后的崩溃日志:
2020-04-21 19:47:47.163 12202-12202/com.example.plaatuitslagberekenen D/AndroidRuntime: Shutting down VM
2020-04-21 19:47:47.164 12202-12202/com.example.plaatuitslagberekenen E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.plaatuitslagberekenen, PID: 12202
java.lang.NumberFormatException: For input string: "100.0"
at java.lang.Integer.parseInt(Integer.java:615)
at java.lang.Integer.parseInt(Integer.java:650)
at com.example.plaatuitslagberekenen.MainActivity$1.onClick(MainActivity.java:52)
at android.view.View.performClick(View.java:7125)
at android.view.View.performClickInternal(View.java:7102)
at android.view.View.access$3500(View.java:801)
at android.view.View$PerformClick.run(View.java:27336)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-04-21 19:47:47.186 12202-12202/com.example.plaatuitslagberekenen I/Process: Sending signal. PID: 12202 SIG: 9
【问题讨论】:
您遇到了什么异常?请附上堆栈跟踪。 【参考方案1】:将所有输入作为双精度:-
double result_num;
double int_LA_num, int_LB_num, int_LC_num, int_t_num, int_Ri_x_num, int_Ri_y_num;
double k_factor;
double BA_1;
double BA_2;
double OneThirdth = 0.333333333;
int_LA_num = Double.parseDouble(int_LA.getText().toString());
int_LB_num = Double.parseDouble(int_LB.getText().toString());
int_LC_num = Double.parseDouble(int_LC.getText().toString());
int_t_num = Double.parseDouble(int_t.getText().toString());
int_Ri_x_num = Double.parseDouble(int_Ri_x.getText().toString());
int_Ri_y_num = Double.parseDouble(int_Ri_y.getText().toString());
//result_num = (int_t_num) + int_LC_num + int_LA_num + int_LB_num +
int_Ri_x_num + int_Ri_y_num + k_factor;
result_num = ((int_LA_num - int_t_num) + (int_LB_num - (int_t_num * 2)) +
(int_LC_num - int_t_num) + ((OneThirdth * int_t_num) / 90) *
(int_Ri_x_num) + ((OneThirdth * int_t_num) / 90) * (int_Ri_y_num));
【讨论】:
如果我这样做,我的程序说我可以在我的总和中使用它,检查我在我的主要帖子中所做的编辑 我看到您的编辑根据您的更改编辑我的答案。你可以把所有的输入都加倍。一个整数会被 JVM 自动转换为 double 类型,因此将它们全部转换为 double 类型,那么无论它是 double 还是 integer,你都会得到 double 的结果。 哇!!它正在工作。那部分是编程中最令人满意的部分。非常感谢你:)))))))))))) 你让我的一天真的很棒:)【参考方案2】:您可以在运行时或您的特定条件下更改您的 EditText 输入类型。
int_LA.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
您可以在计算之前解析您的编辑文本数据。 请分享您的崩溃日志以确定崩溃的原因。
【讨论】:
我可以把这个放在哪里? “我希望 LA_num 有时是浮点数,有时是整数。如何在这段代码中转换它。”根据您的逻辑,您何时接受浮点数。以上是关于如何在 Android Studio 的 EditText 中填充浮点数和整数的主要内容,如果未能解决你的问题,请参考以下文章