检查是否选择了开关大小写
本文关键字:开关 大小写 选择 是否 检查 | 更新日期: 2023-09-27 18:31:43
我有一个使用开关大小写的练习。假设代码像
int choice;
do {
choice = //user input here;
switch (choice) {
case 1: //print something; break;
case 2: //print something; break;
case 3: //print something; break;
default: //print default; break;
}
} while(condition);
我希望用户只能选择一次案例。如果他们确实选择了案例 1,他们就不能再次选择。
为每个选项定义一个私有布尔变量,如果用户调用每个选项,则将其设置为 true。然后在再次运行该选项代码之前检查其是否为真。
例如:
bool _case1=false;
int choice;
do{
choice = //user input here;
switch(choice){
case 1:
if(!_case1)
{
//print something;
_case1=true;
}
else
{
//Tell the user "You have selected this option once"
}
break;
//etc
}
}while(condition);
您可以为每个案例调用方法,并有一些布尔值来标记是否已选择每个案例,使用 if 语句检查是否已选择案例,如果是,则打印通知以选择另一个案例,否则执行操作。
您也可以在没有单独方法的情况下执行此操作,但我是模块化代码的粉丝。 :)
我假设包含此开关大小写的函数被一遍又一遍地调用。如果你想要这样的功能,我会指向 Set。使用该集来存储选项。如果一个集合已经包含某个选项,请采取您认为合适的任何操作。
使用集合比拥有全局布尔数组更好,因为这可能会浪费大量内存,具体取决于您拥有的选择数量。
这能回答你的问题吗?
当用户按下输入时
如果输入是匹配大小写,则 将此输入存储在一个列表中。
下次你得check this input
.
如果它是否属于列表,
如果属于,则案例不会执行如果不属于,那么它将执行案例。
尝试这样:
List<Integer> choiceList = new ArrayList<Integer>();
int choice;
do {
choice = //user input here;
if (choiceList.contains(choice)) {
continue;
}
choiceList.add(choice);
switch(choice) {
case 1: //print something; break;
case 2: //print something; break;
case 3: //print something; break;
default: //print default; break;
}
} while(condition);
正如其他一些答案所说,您可以使用boolean
来检查是否使用了案例。但是,您也可以使用 int
.使用int
的优点是可以指定每种情况可以使用的次数。例如,以下代码只能使用每种情况一次。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
int choice;
int case1 = 0, case2 = 0, case3 = 0;
int case1lim = 1, case2lim = 1, case3lim = 1;
System.out.println("You may use may enter the number 1 " + case1lim + " times");
System.out.println("You may use may enter the number 2 " + case2lim + " times");
System.out.println("You may use may enter the number 3 " + case3lim + " times");
do {
System.out.println("Please enter a number between 1 and 3");
choice = user_input.nextInt();
if(choice == 1 && case1 < case1lim || choice == 2 && case2 < case2lim || choice == 3 && case3 < case3lim) {
switch(choice){
case 1: //print something;
case1++;
break;
case 2: //print something;
case2++;
break;
case 3: //print something;
case3++;
break;
default: //print default;
break;
}
} else {
System.out.println("Please pick another number since you have already used that case or you entered a bad value");
}
} while(true);
}
}
但是,如果更改行的值
int case1lim = 1, case2lim = 1, case3lim = 1;
自
int case1lim = 2, case2lim = 1, case3lim = 1;
您可以使用第一种情况两次,所有其他情况使用一次。