将switch语句与imageview可见性连接起来

时间:2016-12-21 18:50:35

标签: java android switch-statement

所以我想做一个小赌博游戏,玩家按下一个按钮,然后一个看不见的图像再次可见,显示他得到的图片。

我尝试通过制作随机数生成器并使用switch语句来实现这一点,但我的图片不会再次显示。

这是我的java文件

package serchgoodswing.gamblegame;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.Random;

public class MainActivity extends AppCompatActivity {
public ImageView reward1;
public ImageView reward2;
public ImageView reward3;
public ImageView reward4;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



}
public void generate (View view) {
    Random rand= new Random();
    int generatedNumber = rand.nextInt(999)+1;
   switch (generatedNumber){
       case 1-500:
           reward1.setVisibility(View.VISIBLE);
           break;
       case 501-600:
           reward2.setVisibility(View.VISIBLE);
           break;
       case 601-650:
           reward3.setVisibility(View.VISIBLE);
           break;
       case 651-1000:
           reward4.setVisibility(View.VISIBLE);
           break;

   }



    }

 }

这是我的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="serchgoodswing.caseopening.MainActivity">


<Button
    android:text="Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="165dp"
    android:id="@+id/button"
    android:onClick="generate" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/a"
    android:id="@+id/reward1"
    android:layout_marginBottom="75dp"
    android:layout_alignBottom="@+id/button"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:visibility="invisible"/>

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/b"
    android:id="@+id/reward2"
    android:layout_alignBottom="@+id/button"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="11dp"
    android:layout_marginStart="11dp"
    android:layout_marginBottom="58dp"
    android:visibility="invisible"/>

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/c"
    android:id="@+id/reward3"
    android:layout_alignBottom="@+id/reward1"
    android:visibility="invisible"/>

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/d"
    android:id="@+id/reward4"
    android:layout_alignBottom="@+id/reward2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:visibility="invisible"/>
    </RelativeLayout>

我错了什么?有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

您应该尝试为案例使用不同的值。 Java不喜欢switch语句的范围。有几种方法可以解决这个问题,但一个简单的解决方案是使用if语句将范围与生成的随机数进行比较。

int result;
if(generatedNumber >=1 && generatedNumber <= 500)
     result = 1;
if(generatedNumber >=501 && generatedNumber <= 600)
     result = 2;
if(generatedNumber >=601 && generatedNumber <= 650)
     result = 3;
if(generatedNumber >=651 && generatedNumber <= 1000)
     result = 4;

然后更改switch语句以使用结果变量与您当前拥有的generatedNumber(范围)。

您也可以只在if语句中添加逻辑并完全跳过switch语句。