Java 我的听众和吐司不合作
我一直在为一个Android应用程序任务编写这个程序,尽管Eclipse的代码没有问题,但我的手机似乎无法运行它。我是Android编程的新手,所以请容忍我 这个Android应用程序是一个简单的猜测我的数字游戏,在一个空白的活动。用户要从1-100猜,在EditText视图中输入答案,然后按下按钮提交答案。设计很好,但是要让它与OnClickListener一起工作是一件麻烦事。我一按下按钮,应用程序就会在我的GS3上崩溃。最麻烦的部分是让按钮动作,并以吐司的形式给出输出 附件是MainActivity.java中的代码 我设法通过StackOverflow以及我所知道的一些Java来获取不同的代码片段。结果不完善;不过值得一试 你可以看看我的。谢谢你抽出时间,我也很感激能得到的任何帮助Java 我的听众和吐司不合作,java,android,eclipse,Java,Android,Eclipse,我一直在为一个Android应用程序任务编写这个程序,尽管Eclipse的代码没有问题,但我的手机似乎无法运行它。我是Android编程的新手,所以请容忍我 这个Android应用程序是一个简单的猜测我的数字游戏,在一个空白的活动。用户要从1-100猜,在EditText视图中输入答案,然后按下按钮提交答案。设计很好,但是要让它与OnClickListener一起工作是一件麻烦事。我一按下按钮,应用程序就会在我的GS3上崩溃。最麻烦的部分是让按钮动作,并以吐司的形式给出输出 附件是MainAct
package com.lookjohn.guessnumber;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
Random random;
Button button;
EditText text;
int input;
int MIN = 1, MAX = 100;
int comp;
int guesses;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
random = new Random();
button = (Button)findViewById(R.id.button1);
text = (EditText)findViewById(R.id.editText1);
comp = random.nextInt(MAX - MIN + 1) + MIN;
guesses = 0;
button.setOnClickListener(myhandler1);
}
View.OnClickListener myhandler1 = new View.OnClickListener() {
public void onClick(View v) {
String value = text.getText().toString(); // Get value from input from editTextView
input = Integer.parseInt(value); // Turn string into integer
do{
guesses++;
if(input > comp)
Toast.makeText(MainActivity.this,
"Number is too big.",
Toast.LENGTH_SHORT).show();
else if (input < comp)
Toast.makeText(MainActivity.this,
"Number is too small.",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this,
"Good job! That was correct." +
"You made " + guesses + " guesses.",
Toast.LENGTH_SHORT).show();
} while(input != comp);
}
};
编辑:我在您的代码中发现了一些其他问题。首先,EditText的输入类型是phone。应该是数字。此外,用户可以提交空白编辑文本,这将导致应用程序在调用parseInt时崩溃。我已经在下面对您的代码进行的一些更改中解决了这一问题 问题在你的循环中。按下submit后,您将进入一个无限循环。我认为您希望用户能够提交多个猜测。但是,如果用户输入了3,而您的计算值是10,那么您的循环所做的就是确定3!=十次又一次。这会导致UI冻结 删除while循环将允许Toast显示:
public void onClick(View v) {
// If you want to implement a max number of guesses, detect the
// number of guesses and return from the method.
if (guesses > 5) {
Toast.makeText(MainActivity.this, "Out of guesses!", Toast.LENGTH_SHORT);
return;
}
String value = text.getText().toString(); // Get value from input from editTextView
// If the user submits an empty EditText, return so we don't crash when parsing int
if (value.isEmpty()) {
Toast.makeText(MainActivity.this, "You must enter a guess!", Toast.LENGTH_SHORT);
return;
}
input = Integer.parseInt(value); // Turn string into integer
guesses++;
if(input > comp)
Toast.makeText(MainActivity.this,
"Number is too big.",
Toast.LENGTH_SHORT).show();
else if (input < comp)
Toast.makeText(MainActivity.this,
"Number is too small.",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this,
"Good job! That was correct." +
"You made " + guesses + " guesses.",
Toast.LENGTH_SHORT).show();
}
您已经在click listener中为guess变量创建了无限循环,该变量始终递增且不会停止 只需删除do{…}while循环,然后重试。因为似乎不需要使用它
if(input > comp)
Toast.makeText(MainActivity.this,
"Number is too big.",
Toast.LENGTH_SHORT).show();
else if (input < comp)
Toast.makeText(MainActivity.this,
"Number is too small.",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this,
"Good job! That was correct." +
"You made " + guesses + " guesses.",
Toast.LENGTH_SHORT).show();
请同时发布日志,其中出现异常:为什么在这里使用循环?只需删除循环,并添加@Override注释,你应该会很好。嘿,约翰,你看到我的答案了吗。不,鲁兹:哇,所以在这种情况下不允许使用循环?我真的认为它们可以使用。非常感谢你的解释和代码修改,迈克!
if(input > comp)
Toast.makeText(MainActivity.this,
"Number is too big.",
Toast.LENGTH_SHORT).show();
else if (input < comp)
Toast.makeText(MainActivity.this,
"Number is too small.",
Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this,
"Good job! That was correct." +
"You made " + guesses + " guesses.",
Toast.LENGTH_SHORT).show();