Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序为空时崩溃_Java_Android - Fatal编程技术网

Java 应用程序为空时崩溃

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.

我最近开始学习android studio,我制作了一个应用程序,可以显示数字是三角形还是正方形。问题是当用户没有在textfield中输入任何内容时,我的应用程序就会崩溃!为什么会这样?我需要改变什么

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=“请输入一个数字!”我如何将其更改为仅“请输入一个数字”;功能齐全!我想要的方式感谢您的帮助;)这是我第一次使用此网站!没想到这么快就能得到正确答案:)