Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从内部切换case语句和run方法_Java_Android_Switch Statement - Fatal编程技术网

Java 从内部切换case语句和run方法

Java 从内部切换case语句和run方法,java,android,switch-statement,Java,Android,Switch Statement,我在开关箱中使用随机数。因此,我们要做一些类似的事情: public void something { Random myRand = new Random(); int number = myRand.nextInt(10 - 1) + 1; switch(number) case 1: Do something and on completion go back and start running the something method again. break: case 1;

我在开关箱中使用随机数。因此,我们要做一些类似的事情:

public void something {
Random myRand = new Random();
int number = myRand.nextInt(10 - 1) + 1;
switch(number)
case 1:
     Do something and on completion go back and start running the something method again.
break:
case 1;
     Do something and on completion go back and start running the something method again.
break;
根据用户的输入,每个case语句可以运行任意次数,有些甚至可能不被使用

我想在案例陈述中说:-

public void something (run);
我想做的是可能的还是有更好的方法?

关注您使用的CASE语法

解决方案如下-->在while循环中保持循环

public void something {
    boolean condition = true; // toggle this condition boolean to FALSE, when you want to break the loop
    while(condition){
        Random myrand = new Random();
        int number = myrand.nextInt(10 - 1) + 1;
        switch(number)
        case 1;
             Do something and on completion go back and start running the something method again.
        break;
        case 1;
             Do something and on completion go back and start running the something method again.
        break;

    }
}

在这种情况下,您可以使用do while语句和条件来停止执行。 在do while中调用您的something方法

do {
something();
} while(condition);

这将调用您的方法执行您的switch case并再次调用您的something方法。

以下代码随机多次重复调用runsomethod()方法

使用for循环:

public void something() {
    Random myrand = new Random();
    int number = myrand.nextInt(10 - 1) + 1;
    for(int i=0 ; i<number ; i++) {

        runSomeMethod();
    }
}
public void something(){
Random myrand=新的Random();
整数=myrand.nextInt(10-1)+1;

对于(int i=0;i我可以建议您使用接口吗? 您试图实现的就是所谓的将函数作为参数传递给另一个函数的过程

java通过使用接口以某种方式支持函数式编程,并且有许多内置接口来简化该过程

我建议您看看java.util.function包

现在让我们开始你的代码

public void something(Supplier<Void> function) {
    boolean condition = true; //use this boolean to control your loop
    while (condition) {
        Random myrand = new Random();
        int number = myrand.nextInt(10 - 1) + 1;
        switch (number) {
            case 1:
                function.get();
                break;
            case 2:
                function.get();
                break;
        }
    }
}
公共作废某物(供应商职能){
boolean condition=true;//使用此布尔值控制循环
while(条件){
Random myrand=新的Random();
整数=myrand.nextInt(10-1)+1;
开关(编号){
案例1:
函数get();
打破
案例2:
函数get();
打破
}
}
}
你可以这样称呼你的“某物”

public void Call() {

    //if you want to declare the function only once
    something(new Supplier<Void>() {
        @Override
        public Void get() {
            System.out.println("the job is done!");
            return null;
        }
    });

    // if you already have a class implementing supplier
    something(new MyFunction());
}
公共作废调用(){
//如果只想声明函数一次
某物(新供应商){
@凌驾
公开作废获取(){
System.out.println(“任务完成了!”);
返回null;
}
});
//如果您已经有一个实现供应商的类
某物(新的MyFunction());
}
并不是因为您的功能没有任何输入,所以使用了供应商界面
您还可以使用Consumer、BiConsumer、Function、BiFunction…对于具有输入的函数

no,您需要在该方法之外声明您的方法,并在您的case块中调用它。case后面不应该跟一个“:”而不是“;”?您使用的单词
something
令人困惑,“做点什么,完成后返回并开始运行something方法”但这已经在
something
方法中了?@a_local_nobody好吧,@whocare?这是一个很好的观察结果,但与问题的答案无关。你应该将其作为对OP的评论。