此问题已在此处有答案:
Getting a NumberFormatException from a numerical EditText field(7个回答)
9小时前关闭
我在高中的最后一个年级,他们让我作为一个项目,以衡量最大高度的抛物线拍摄。我已经有了这个程序,它工作正常,但错误发生时,我没有把信息在PlainText和程序关闭(Android Studio).我看到我可以用按钮“FloatingActionButton”做一些事情,但我不知道如何在我的Java代码中放置它。
下面是我的Java代码:
public class MainActivity extends AppCompatActivity {
private EditText velocityEditText;
private EditText angleEditText;
private Button calculateButton;
private TextView resultTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
velocityEditText = findViewById(R.id.velocity_edit_text);
angleEditText = findViewById(R.id.angle_edit_text);
calculateButton=findViewById(R.id.calculateButton);
resultTextView = findViewById(R.id.result_text_view);
calculateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double velocity = Double.parseDouble(velocityEditText.getText().toString());
double angle = Double.parseDouble(angleEditText.getText().toString());
double radians = Math.toRadians(angle);
double range = ((Math.pow(velocity, 2)) * (Math.pow(Math.sin(radians), 2))) / (2 * 9.81);
resultTextView.setText("Altura Máxima: " + String.format("%.2f", range) + " m");
}
});
}
}
我的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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EFECAF"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-black"
android:text="Velocidad inicial (m/s):"
android:textColor="#100F0F" />
<EditText
android:id="@+id/velocity_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:textColor="#0E0E0E" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-black"
android:text="Ángulo de lanzamiento (grados):"
android:textColor="#121111" />
<EditText
android:id="@+id/angle_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:textColor="#0E0E0E" />
<Button
android:id="@+id/calculateButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="#FF9800"
android:text="Calcular altura máxima" />
<TextView
android:id="@+id/result_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textAlignment="center"
android:textColor="#100F0F"
android:textSize="20sp"
android:textStyle="italic" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/altura" />
</LinearLayout>
如果我没有正确地输入代码信息,我很抱歉,但这是我第一次在这里提问。
如果我将文本字段留空并单击按钮,则应用程序将崩溃。
1条答案
按热度按时间zhte4eai1#
您使用的编程语言是Java而不是Javascript(JS)。应用程序崩溃,因为如果没有输入文本,那么
Double.parseDouble()
函数将用于空字符串。要解决这个问题,请将calculateButton.setOnClickListener()
替换为:在上面的代码中,我们首先检查字符串是否不为空,然后将字符串传递给
Double.parseDouble()
函数。如果文本字段为空,则向用户显示一条消息。