Java 具有imageview可见性的Connect开关语句

Java 具有imageview可见性的Connect开关语句,java,android,switch-statement,Java,Android,Switch Statement,所以我试着做一个小赌博游戏,玩家按下一个按钮,然后一个看不见的图像再次变为可见,显示他得到了哪张图片 我试图通过制作一个随机数生成器和使用switch语句来实现这一点,但我的图片不会再次可见 这是我的java文件 package serchgoodswing.gamblegame; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import

所以我试着做一个小赌博游戏,玩家按下一个按钮,然后一个看不见的图像再次变为可见,显示他得到了哪张图片

我试图通过制作一个随机数生成器和使用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>


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

您应该尝试为案例使用不同的值。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;
int结果;

如果(generatedNumber>=1&&generatedNumber=501&&generatedNumber=601&&generatedNumber=651&&generatedNumber您应该尝试对这些情况使用不同的值。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;
int结果;

如果(generatedNumber>=1&&generatedNumber=501&&generatedNumber=601&&generatedNumber=651&&generatedNumber您认为案例1-500的意思是什么?为什么?我是java新手,所以我的代码肯定会有一些错误。我想案例1-500会检查生成的数字是否在1到500之间,如果是这样的话,它会设置为ImageView再次可见,但既然你问了,我认为它意味着其他东西?@PM77-1我忘了提到你的名字,但无法编辑我的评论。
1-500
被评估为
-499
。你还没有回答我问题的第二部分:为什么你认为
case
语法支持范围?你在哪里看到这种语法或者在Java中?你认为案例1-500是什么意思?为什么?我是Java新手,所以我的代码肯定会有一些错误。我想案例1-500会检查生成的数字是否在1到500之间,如果是这样的话,它会再次设置ImageView可见,但现在你问我,我假设它意味着其他东西?@PM77-1我忘了提到你的名字,但不能编辑我的评论。
1-500
的计算结果为
-499
。你还没有回答我问题的第二部分:为什么你认为
case
语法支持范围?你在Java中从何处看到这种语法?很抱歉问一下,使用result变量和generate是什么意思d?public void generate(视图视图){Random rand=new Random();int generatedNumber=rand.nextInt(999)+1;开关(结果){case 1:reward1.setVisibility(View.VISIBLE);break;case 2:reward2.setVisibility(View.VISIBLE);中断;案例3:reward3.setVisibility(View.VISIBLE);中断;案例4:reward4.setVisibility(View.VISIBLE);break;抱歉,代码的格式不正确。无论如何,只要在代码结果中使用generatedNumber进行切换就可以了。然后将大小写更改为使用1、2、3、4,而不是范围。很抱歉问一下,使用结果变量和生成的?public void generate是什么意思(视图){Random rand=new Random();int generatedNumber=rand.nextInt(999)+1;开关(结果){case 1:reward1.setVisibility(View.VISIBLE);break;case 2:reward2.setVisibility(View.VISIBLE);中断;案例3:reward3.setVisibility(View.VISIBLE);中断;案例4:reward4.setVisibility(View.VISIBLE);break;抱歉,代码的格式不正确。无论如何,只需在代码结果中使用generatedNumber切换即可。然后将大小写更改为使用1、2、3、4而不是范围。