【发布时间】: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