这是我的随机数生成器的java文件。每当我运行应用程序时,它都会崩溃。救救我!
public class MainActivity extends AppCompatActivity {
int k;
public void lol(View v) {
EditText e1 = (EditText) findViewById(R.id.e1);
EditText e2 = (EditText) findViewById(R.id.e2);
TextView t = (TextView) findViewById(R.id.t);
int h = Integer.parseInt(String.valueOf(e1));
int i = Integer.parseInt(String.valueOf(e2));
Random u = new Random();
k = h + u.nextInt(i);
t.setText(k);
}
}
答案 0 :(得分:2)
您需要从EditText获取文本。此外,您需要在将字符串解析为Integer时使用try catch块,否则如果String无法解析为int,则可能会抛出RuntimeException。
public void lol(View v) {
EditText e1 = (EditText) findViewById(R.id.e1);
EditText e2 = (EditText) findViewById(R.id.e2);
TextView t = (TextView) findViewById(R.id.t);
String e1Text = e1.getText().toString();
String e2Text = e2.getText().toString();
try{
int h = Integer.parseInt(String.valueOf(e1));
int i=Integer.parseInt(String.valueOf(e2));
Random u = new Random();
k = h + u.nextInt(i);
t.setText(k);
}catch(Exception e){
//some exception
}
}
答案 1 :(得分:0)
您收到此错误可能是您的随机数小于0(零)。最好在这样的范围内生成随机数
Random rn = new Random();
int range = maximum - minimum + 1;
int randomNum = rn.nextInt(range) + minimum;
答案 2 :(得分:0)
您还可以尝试以下内容(请注意,这是适用于Android的Xamarin,因此它是C#,而不是Java):
public void lol(View v)
{
EditText e1 = (EditText)FindViewById(Resource.Id.e1);
EditText e2 = (EditText)FindViewById(Resource.Id.e2);
TextView t = (TextView)FindViewById(Resource.Id.t);
int h, i, k;
// TryParse tries to parse the text as an integer and returns a value
// indicating whether or not it succeeded
// e1.Text is equivalent to a call to e1.getText()
if (int.TryParse(e1.Text, out h) && int.TryParse(e2.Text, out i))
{
Random u = new Random();
k = h + u.Next(i);
// This is equivalent to doing a call to t.setText(...)
t.Text = k.ToString();
}
}
因此,基本上,在尝试使用它之前,请检查以确保它实际上 是一个int。此外,这是从EditText获取文本值的更好方法。