繁体   English   中英

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

[英]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>而不是循环或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");
}

您可以为此使用无限循环,并在遇到一种情况时设置标志。 例如:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM