Java 应用程序为空时崩溃
我最近开始学习android studio,我制作了一个应用程序,可以显示数字是三角形还是正方形。问题是当用户没有在textfield中输入任何内容时,我的应用程序就会崩溃!为什么会这样?我需要改变什么Java 应用程序为空时崩溃,java,android,Java,Android,我最近开始学习android studio,我制作了一个应用程序,可以显示数字是三角形还是正方形。问题是当用户没有在textfield中输入任何内容时,我的应用程序就会崩溃!为什么会这样?我需要改变什么 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
class Number {
int number;
public boolean isSquare() {
double squareRoot = Math.sqrt(number);
if (squareRoot == Math.floor(squareRoot)) {
return true;
} else {
return false;
}
}
public boolean isTriangular() {
int x = 1;
int y = 1;
while (y < number) {
x++;
y = y + x;
}
if ( y == number ) {
return true;
} else {
return false;
}
}
}
public void testNumber(View view) {
String msg = "";
EditText usersNumber = (EditText) findViewById(R.id.usersNumber);
Number myNumber = new Number();
myNumber.number = Integer.parseInt(usersNumber.getText().toString());
if (usersNumber.getText().toString().isEmpty()) {
msg = myNumber.number + "Please eneter a Number!";
} else {
if (myNumber.isSquare()) {
if (myNumber.isTriangular()) {
msg = myNumber.number + "is both square and triangular!";
} else {
msg = myNumber.number + "is square but not traingular";
}
} else {
if (myNumber.isTriangular()) {
msg = myNumber.number + "is triangular but not suqare !";
} else {
msg = myNumber.number + "is neither";
}
}
}
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
导入android.support.v7.app.app活动;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.EditText;
导入android.widget.Toast;
公共类MainActivity扩展了AppCompatActivity{
班号{
整数;
公共布尔isSquare(){
双平方根=数学sqrt(数字);
如果(平方根==数学楼层(平方根)){
返回true;
}否则{
返回false;
}
}
公共布尔isTriangular(){
int x=1;
int y=1;
while(y
如果用户未在edittext文件中输入数字,则usersNumber.getText().toString()
返回空白,不能将其作为数字进行削减
这就是为什么在这条语句中会出现异常:Integer.parseInt(usersNumber.getText().toString())代码>
有关更多详细信息,请参阅。
要停止应用程序崩溃,可以在代码周围使用try{…}catch{…}
块:
try {
myNumber.number = Integer.parseInt(usersNumber.getText().toString());
if (usersNumber.getText().toString().isEmpty()) {
msg = myNumber.number + "Please eneter a Number!";
} else {
if (myNumber.isSquare()) {
if (myNumber.isTriangular()) {
msg = myNumber.number + "is both square and triangular!";
} else {
msg = myNumber.number + "is square but not traingular";
}
} else {
if (myNumber.isTriangular()) {
msg = myNumber.number + "is triangular but not suqare !";
} else {
msg = myNumber.number + "is neither";
}
}
}
}catch (NumberFormatException ne){
//handle the exception
}
或者只需在将其解析为整数之前检查null:
if (!usersNumber.getText().toString().equals("")){
myNumber.number = Integer.parseInt(usersNumber.getText().toString());
} else {
myNumber.number = 0;
}
将您想要的代码放入try-catch语句中,这样,如果出现错误,应用程序将不会崩溃
try
{
//Insert code here//
}
catch(Exception e)
{
//Handle error here//
}
张贴错误日志为什么添加ios标签?这不是obj-c或swift代码!!简单提示一下:将类Number
放在它自己的.java文件中。没有理由把这个放在你的活动中。并检查是否存在使用android studio 2.2.3 btwDo无法捕获超类异常的错误。总是抓住它的一个具体的子类是的,谢谢,这终于成功了!但是当用户不输入任何内容时,它会显示“0请输入一个数字”如果(usersNumber.getText().toString().isEmpty()){msg=“请输入一个数字!”我如何将其更改为仅“请输入一个数字”;功能齐全!我想要的方式感谢您的帮助;)这是我第一次使用此网站!没想到这么快就能得到正确答案:)