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的评论。