2013-11-27 69 views
1

我需要将可变参数添加到已具有大量参数的切换案例的语法。上下文提供如下。将字符串切换为整数

我正在使用开关的情况下,将字符串答案更改为整数返回。而不是让用户回答

1.这。
2.其他东西。

我想要的答案看起来像

(Y/N)

我用这样的代码之前完成它:

static public int getYN() { 
    String answer = ""; 
    switch(keyboard.nextLine().substring(0, 1).toLowerCase()) { 
     case "y": 
      return 1; 

     case "n": 
      return 0; 

     default: 
      return 2; 

    } 
} 



然后使用声明:

int getAnswer = getYN(); 
     System.out.println(); 

     if (getAnswer == 1) { 
     System.out.println("Stuff."); 
     test = 1; 
     } 
     else { 
     System.out.println("Other stuff."); 
     System.out.println(); 
    } 

但是,我不知道把String应答变量放到switch case的位置。通常情况下,如果你不使用许多其它参数,这纯粹是

switch(answer) { 
} 



+0

请加正确的语言标签...似乎[标签:java] – hyde

+0

请添加具体的问题...... – geedubb

+4

问题不明确。你想达到什么目的? – Zong

回答

0

检查它内联,忘了有一个专门的方法做这个检查。

char getAnswer = keyboard.next().charAt(0); 

    System.out.println(); 

    if (getAnswer == 'y' || getAnswer == 'Y') 
    { 
     System.out.println("Stuff."); 
     test = 1; 
    } 
    else if(getAnswer == 'n' || getAnswer == 'N') 
    { 
     System.out.println("Other stuff."); 
     System.out.println(); 
    } 

如果你绝对必须使用一个开关:

char getAnswer = keyboard.next().charAt(0); 

    switch(getAnswer) 
    { 
     case 'y': 
      System.out.println("Stuff."); 
      test = 1; 
      break; 
     case 'n': 
      System.out.println("Other stuff."); 
      System.out.println(); 
      break; 
    } 
+0

我发现代码if(answer.equalsIgnoreCase(“yes”)){}'或'(“no”)'适用于这个同样的事情,我不知道它是如何花了我很长的时间来计算它出。但是,这些答案同样适用,它是编码逻辑的好材料。谢谢!特别是来自@Bohemian的答案。 –

0

可以实现同样的事情在一个行:

public static int getYN(String s) { 
    return ("yn YN".indrxOf(s) + 3) % 3; 
} 

上下两个案件的处理,以及“找不到”默认值2是通过加3来处理(indexOf()返回-1,当目标未找到时)并且模数除法处理大写字母索引。

即使我自己这样说也相当整齐。