Android 应用程序正在崩溃随机数生成器

Android 应用程序正在崩溃随机数生成器,android,random,numbers,Android,Random,Numbers,这是我的随机数生成器的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);

这是我的随机数生成器的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);
    }
}

您需要从EditText获取文本。此外,在将字符串解析为整数时,还需要使用try-catch块,否则,如果无法将字符串解析为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
    }
}

您需要从EditText获取文本。此外,在将字符串解析为整数时,还需要使用try-catch块,否则,如果无法将字符串解析为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
    }
}

您得到的错误可能是您的随机数小于0(零)。最好在这样的范围内生成随机数

Random rn = new Random();
int range = maximum - minimum + 1;
int randomNum =  rn.nextInt(range) + minimum;

您得到的错误可能是您的随机数小于0(零)。最好在这样的范围内生成随机数

Random rn = new Random();
int range = maximum - minimum + 1;
int randomNum =  rn.nextInt(range) + minimum;

您还可以尝试以下内容(注意,这是针对Android的Xamarin,所以它是C#,而不是Java):


所以,基本上,在您尝试使用它之前,您需要检查以确保它实际上是一个int。此外,这是从EditText获取文本值的更好方法。

您也可以尝试以下方法(注意,这是针对Android的Xamarin,所以它是C#,而不是Java):


所以,基本上,在您尝试使用它之前,您需要检查以确保它实际上是一个int。此外,这是从EditText获取文本值的更好方法。

您得到的错误是什么?发布stacktrace。您需要更具体一些。请发布日志。您得到的错误是什么?发布stacktrace。您需要更具体。请发布日志。负数可能不是OP想要的,但它仍然会产生一个有效字符串-我认为这不会导致异常。@EJoshuaS OP尚未发布stact跟踪,所以我只是猜测。很公平-如果没有日志,很难确定发生了什么错误。负数可能不是OP想要的,但它仍然会产生一个有效字符串-我不认为这会导致异常。@EJoshuaS OP还没有发布stact跟踪,所以我只是猜测。这很公平——没有日志很难确定到底出了什么问题。@nesbak203然后通过将此作为接受的答案来感谢sanjeet。@nesbak203然后通过将此作为接受的答案来感谢sanjeet。