我一直坚持这个,我没有找到类似的案例,这是我的问题。
我正在尝试根据Random方法的结果显示图像。如果Random的int为3(例如),则显示的图像必须为数字3。
问题在于我无法将Random的结果与其正确的图像相匹配。
public class Second extends AppCompatActivity {
ImageView cIma01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
cIma01 = findViewById(R.id.imageView);
generAle();
String stri = String.valueOf(generAle());
Log.e(stri, "Number");
if (generAle() == 0) {
cIma01.setImageResource(R.drawable.num0);
} else if (generAle() == 1) {
cIma01.setImageResource(R.drawable.num1);
} else if (generAle() == 2) {
cIma01.setImageResource(R.drawable.num2);
} else if (generAle() == 3) {
cIma01.setImageResource(R.drawable.num3);
} else if (generAle() == 4) {
cIma01.setImageResource(R.drawable.num4);
}
}
private int generAle () {
Random rand = new Random();
return rand.nextInt(5);
}
LogCat说Random方法的结果就是这个(我连续尝试了10次只是为了测试):
0, 1, 3, 4, 1, 3, 0, 4, 3, 1
但显示的图像是下一个:
0, 4, X, 1, 3, 0, 3, 2, 3, 1
甚至没有关闭! X是因为在这种情况下它根本没有显示任何图像(omg!)
我已经尝试了一些替代方案,比如使用switch case,但它是相同的
答案 0 :(得分:0)
您的问题是,您在第8,9行以及if-else语句中多次调用generAle ()
。
这是另一种方法:
public class Second extends AppCompatActivity {
ImageView cIma01;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
cIma01 = findViewById(R.id.imageView);
String stri = String.valueOf(generAle());
Log.e(stri, "Number");
if (stri.equals("0")) {
cIma01.setImageResource(R.drawable.num0);
} else if (stri.equals("1")) {
cIma01.setImageResource(R.drawable.num1);
} else if (stri.equals("2")) {
cIma01.setImageResource(R.drawable.num2);
} else if (stri.equals("3")) {
cIma01.setImageResource(R.drawable.num3);
} else if (stri.equals("4")) {
cIma01.setImageResource(R.drawable.num4);
}
}
private int generAle () {
Random rand = new Random();
return rand.nextInt(5);
}
您可能还想查看the switch statement。