好的,我的问题是,有没有办法循环一些东西,直到插入一个字符串选择?
case "John":
n = 12;
break;
case "Jenny":
n = 6;
break;
default:
System.out.print("Wrong Name");
让我们说在这里我想循环用户输入名称,直到他使用任何上述案例值。现在我知道我可以写一个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所述
答案 0 :(得分:1)
我建议使用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");
}
答案 1 :(得分:1)
您可以使用无限循环,并在遇到其中一个案例时设置标志。例如:
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) ;
}
答案 2 :(得分:0)
您可以使用带标签的中断而不是未标记的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");
}
}