我正在尝试生成随机数。要这样做, 我从编辑文本中获取文本并将其传递给Random类的nextInt。但我有一个问题。我的textView没有改变。 这是代码:
package random.vivek.com.random;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.EditText;
import android.widget.TextView;
/**
* Created by Shiva on 09-08-2015.
*/
public class Random extends AppCompatActivity {
int number , i ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
java.util.Random genertor = new java.util.Random();
EditText editText = (EditText) findViewById(R.id.random);
TextView textView = (TextView) findViewById(R.id.text);
String s = editText.getText().toString();
try {
i = Integer.parseInt(s);
for (int roll = 0; roll < 20; roll++) {
number = genertor.nextInt(i);
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
textView.setText(number + "");
}
}
答案 0 :(得分:3)
尝试:
try {
i = Integer.parseInt(s);
for (int roll = 0; roll < 20; roll++) {
number = genertor.nextInt(i);
textView.setText(number);
}
} catch (NumberFormatException e) {
e.printStackTrace();
答案 1 :(得分:2)
首先,您要在onCreate方法中编写此内容。 onCreate是大多数初始化内容的方法。
因此,在创建视图时,edittext中没有任何内容,因此您在文本视图中什么也得不到。相反,您应该通过单击某个按钮或编辑文本中的文本更改来执行此操作,以使其更具动态性。
要对edittext文本更改执行某些操作,请使用文本观察器,如下所示:
editText.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
String s = editText.getText().toString();
try {
i = Integer.parseInt(s);
for (int roll = 0; roll < 20; roll++) {
number = genertor.nextInt(i);
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
答案 2 :(得分:2)
String s = editText.getText().toString();
try {
i = Integer.parseInt(s);
for (int roll = 0; roll < 20; roll++) {
number = genertor.nextInt(i);
textView.setText(String.ValueOf()number);
// But this will also keep continuing through the loop and change the text quickly.
}
如果要附加值:
String s = editText.getText().toString();
try {
i = Integer.parseInt(s);
for (int roll = 0; roll < 20; roll++) {
number = genertor.nextInt(i);
textView.append(String.ValueOf()number + " ");
另外,你的textView.setText(数字+“”); +“”什么也没做。
如果您希望在更改textView文本之间有时间延迟,则需要更改算法。
答案 3 :(得分:2)
您需要在代码中使用textView.setText(Integer.toString(number))来设置textview
答案 4 :(得分:2)
您将所有代码都放在onCreate
方法中,这是错误的。活动开始时调用onCreate
方法。您应该在应用程序中添加一个按钮或其他内容,以便在用户按下按钮时生成随机数。我认为你有能力这样做,所以我不会告诉你这里。
在按钮的on click侦听器中,编写上面的代码:
public void buttonOnClick(查看视图){ java.util.Random genertor = new java.util.Random(); EditText editText =(EditText)findViewById(R.id.random); TextView textView =(TextView)findViewById(R.id.text);
String s = editText.getText().toString();
try {
i = Integer.parseInt(s);
for (int roll = 0; roll < 20; roll++) {
number = genertor.nextInt(i);
}
textView.setText (Integer.toString(number));
} catch (NumberFormatException e) {
e.printStackTrace();
}