循环,直到为多个switch语句执行break语句

时间:2018-03-14 15:32:59

标签: java loops switch-statement case break

好的,我的问题是,有没有办法循环一些东西,直到插入一个字符串选择?

        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所述

3 个答案:

答案 0 :(得分:1)

我建议使用Map<String, Integer>代替循环或switchif。它具有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");
    }
}