【问题标题】:Why does my app crash when i click a certain button?为什么当我单击某个按钮时我的应用程序会崩溃?
【发布时间】:2016-01-24 04:21:29
【问题描述】:

大家好,我对 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);
}`

【问题讨论】:

  • 没有堆栈跟踪,这很难说,但是您尝试将字符串(guessedNameString)转换为int(数字)是很奇怪的。因此,如果您键入“Albert Einstein”,并将其转换为 int,Java 代码将引发错误。解决方案?不要将其转换为 int :-) 该解决方案可能涉及比较字符串,因此如果您这样做,请使用 .equals,而不是 ==。只需谷歌即可。
  • 您不断将名称设置为字符串whoSaidIt = "Rick";,但随后您尝试将其解析为整数Integer.parseInt(whoSaidIt);。这行不通
  • 发布 (edit) 你的 Logcat
  • ohmygod 为你的应用过滤 logcat
  • 我不知道你为什么发布Logcat,我认为答案很清楚,但是日志包含错误:java.lang.NumberFormatException: Invalid int: "Jerry" at

标签: java android string crash int


【解决方案1】:

您正在尝试将 String 转换为 Int。这仅在 String 是实际 int(即数字)而不是名称(Jerry 或 Rick)时才有效。请改用guessNameString.equals(whoSaidIt)

【讨论】:

  • 在这个确切的代码中应该使用“guessedNameString”,否则由于不同的类,等式总是错误的
  • 感谢您的回复!
  • 非常感谢!这绝对阻止了它崩溃。然而,现在它说“再试一次”,即使它是对的。但我也许能解决这个问题。
  • 你们是英雄!我需要的答案已经在上面发布了^我没有将guessName更改为字符串,但是当我这样做时效果很好!非常感谢!
猜你喜欢
  • 2012-07-22
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 2016-05-24
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
相关资源
最近更新 更多