2016-01-24 161 views
2

大家好,所以我很新的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); 
}` 
+2

没有堆栈跟踪,这是很难说,但它是非常奇怪的,你想为一个字符串(guessedNameString)转换为int(数字)。因此,如果您输入“Albert Einstein”,并将其转换为int,则Java代码将引发错误。解决方案?不要将它转换为int :-)解决方案可能涉及比较字符串,所以如果你这样做,请使用.equals,而不是==。只是谷歌。 –

+1

您将该名称设置为一个字符串'whoSaidIt =“瑞克”;'但你尝试分析它的整数'的Integer.parseInt(whoSaidIt);'。这是行不通的 – Arc676

+0

邮报([编辑])您的logcat –

回答

1

代码你试图将字符串转换成int。这只有在字符串是实际的int(即数字)而不是名称(Jerry或Rick)时才有效。改为使用guessNameString.equals(whoSaidIt)

+0

在“guessedNameString”这个确切的代码应该被使用,否则公式是因为不同类 – F43nd1r

+0

你说得对,固定它始终为false。 –

+0

感谢您的回应! – jrmusante1

相关问题