Java 为什么我的应用程序在单击某个按钮时崩溃?
大家好,我是Java新手,下面的代码肯定会证明这一点。 如果您能告诉我哪里出了问题,我将不胜感激,谢谢 我正在尝试创建一个简单的应用程序,它会显示一个随机引用,并提供猜测是谁说了这句话的机会 非常确定主要问题与-->if(guessNameInt==whoSaidItInt)有关 因为它只有在我单击启用tryLuck if语句的按钮时才会崩溃 下面是我的密码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
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”,否则,由于响应的类别不同,方程总是错误的!非常感谢!这绝对阻止了它的崩溃。然而,现在它说“再试一次”,即使它是正确的。但我也许能弄明白,你们是英雄!我需要的答案已经贴在上面了。^我没有把猜名字改成字符串,但是当我改的时候,它工作得很好!!非常感谢!