Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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_String_Crash_Int - Fatal编程技术网

Java 为什么我的应用程序在单击某个按钮时崩溃?

Java 为什么我的应用程序在单击某个按钮时崩溃?,java,android,string,crash,int,Java,Android,String,Crash,Int,大家好,我是Java新手,下面的代码肯定会证明这一点。 如果您能告诉我哪里出了问题,我将不胜感激,谢谢 我正在尝试创建一个简单的应用程序,它会显示一个随机引用,并提供猜测是谁说了这句话的机会 非常确定主要问题与-->if(guessNameInt==whoSaidItInt)有关 因为它只有在我单击启用tryLuck if语句的按钮时才会崩溃 下面是我的密码 int randomNum; String whoSaidIt; // quotes and numbers public void r

大家好,我是Java新手,下面的代码肯定会证明这一点。 如果您能告诉我哪里出了问题,我将不胜感激,谢谢

我正在尝试创建一个简单的应用程序,它会显示一个随机引用,并提供猜测是谁说了这句话的机会

非常确定主要问题与-->if(guessNameInt==whoSaidItInt)有关 因为它只有在我单击启用tryLuck if语句的按钮时才会崩溃

下面是我的密码

int randomNum;
String whoSaidIt;

// quotes and numbers
public void randomRick(View view) {
    if (randomNum == 0) {

        Toast.makeText(getApplicationContext(), "Life is effort and I'll stop when I die!", Toast.LENGTH_LONG).show();
        whoSaidIt = "Jerry";
    }

    if (randomNum == 1) {

        Toast.makeText(getApplicationContext(), "Well look where being smart got you.", Toast.LENGTH_LONG).show();
        whoSaidIt = "Jerry";
    }

    if (randomNum == 2) {

        Toast.makeText(getApplicationContext(), "Ohh yea, you gotta get schwifty.", Toast.LENGTH_LONG).show();
        whoSaidIt = "Rick";

    }

}

public void tryLuck(View view) {
    EditText guessedName = (EditText) findViewById(R.id.authorIs);
    String guessedNameString = guessedName.getText().toString();
    int guessNameInt = Integer.parseInt(guessedNameString);
    int whoSaidItInt = Integer.parseInt(whoSaidIt);

    if (guessNameInt == whoSaidItInt) {

        Toast.makeText(getApplicationContext(), "Holy crow, Good job!", Toast.LENGTH_LONG).show();

    }

    else {
        Toast.makeText(getApplicationContext(), "Try again", Toast.LENGTH_LONG).show();
    }

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Random randomGenerator = new Random();

    randomNum = randomGenerator.nextInt(3);
}`

您正在尝试将字符串转换为整数。只有当字符串是实际整数(即数字)而不是名称(Jerry或Rick)时,此操作才有效。改用
guessNameString.equals(whoSaidIt)

如果没有stacktrace,很难说,但是尝试将字符串(guessedNameString)转换为int(数字)是非常奇怪的。因此,如果键入“Albert Einstein”,并将其转换为int,Java代码将抛出一个错误。解决方案是什么?不要将其转换为int:-)解决方案可能需要比较字符串,因此如果这样做,请使用.equals,而不是==。只要用谷歌搜索就可以了。你一直把名字设置成一个字符串
whoSaidIt=“Rick”但是您尝试将其解析为整数
integer.parseInt(whoSaidIt)。这不会起作用()你的Logcatohmygod为你的应用程序过滤logcat我不确定你为什么发布logcat,我认为答案很清楚,但日志中包含错误:
java.lang.NumberFormatException:Invalid int:
处的“Jerry”在这段代码中应该使用“guessedNameString”,否则,由于响应的类别不同,方程总是错误的!非常感谢!这绝对阻止了它的崩溃。然而,现在它说“再试一次”,即使它是正确的。但我也许能弄明白,你们是英雄!我需要的答案已经贴在上面了。^我没有把猜名字改成字符串,但是当我改的时候,它工作得很好!!非常感谢!