[英]looping until break statement is executed for multiple switch statements
好的,所以我的问题是,有没有办法循环某些事情,直到插入选择的字符串?
case "John":
n = 12;
break;
case "Jenny":
n = 6;
break;
default:
System.out.print("Wrong Name");
可以这样说,我想让用户输入名称,直到他使用上述任何case值为止。现在,我知道我可以编写while循环并对每个对象使用OR运算符,但是我有很多有效的输入所以有没有一种更简单的循环方法,直到用户输入正确的开关名称。 如果它不正确,我想显示错误的名称并再次提示用户输入
我正在使用Java,对此的任何帮助将不胜感激。 非常感谢。
public static int[] amount(int n) {
int[] values = new int[6];
int i;
i=n+6+6;
values[a]=i;
return values;
}
public static void returnarray(){
int values[]=amount()
int i = 0;
if
(values[i]%==0)
{system.out.println("the value is an even value");
else{ System.out.print("Not so even");
}
}
我遇到的问题是,当我尝试从第一个数组返回值时,amount()方法需要该参数,由于该数组具有参数(int n),我不确定将第一个数组返回至第二个数组,我不确定我是否对您有意义,并且代码也不完全是我键入的方式。
我把它弄清楚。 我需要将n值从开关返回到一个方法中,在该方法中,我将使用该n方法多次执行某种计算并将这些值存储在数组中。 我将把这个数组返回另一个方法,在那里我将进行另一个计算并显示输出; 我遇到的问题是如何将数组返回到第二个方法,因为第一个方法的参数是(int n),如@ kaushal28所述
我建议使用Map<String, Integer>
而不是循环或switch
或if
。 它具有O(1)
和易于执行的优点。 喜欢,
Map<String, Integer> map = new HashMap<>();
map.put("John", 12);
map.put("Jenny", 6);
String key = ""; // <-- your name field.
if (map.containsKey(key)) {
System.out.println(map.get(key)); // <-- 12 or 6
} else {
System.out.println("Wrong name");
}
您可以为此使用无限循环,并在遇到一种情况时设置标志。 例如:
boolean flag = false;
while(!flag){
//take user input here.
case "John":
n = 12;
flag = true;
break;
case "Jenny":
n = 6;
flag = true;
break;
default:
System.out.print("Wrong Name");
}
编辑:除了保留标志,您可以使用标签。 例如:
loop: while(!flag){
//take user input here.
case "John":
display(12); //passing value of n
break loop;
case "Jenny":
display(6);
break loop;
default:
System.out.print("Wrong Name");
}
private void display(int n) {
System.out.println(n) ;
}
您可以使用带标签的中断来代替未带标签的https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
getvalidname: // this is a label
while(true){
//take user input here.
switch(nameInput) {
case "John":
n = 12;
break getvalidname; // breaks out of the statement just after the label
case "Jenny":
n = 6;
flag = true;
break getvalidname;
default:
System.out.print("Wrong Name");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.