【问题标题】:Switch Case with String Arrays using使用字符串数组切换案例
【发布时间】:2018-04-21 00:59:41
【问题描述】:
String[] months={"A","B","C","D","E","F","G","H","I","J","K","L"};
int valueMonth;

Scanner yasin=new Scanner(System.in);

System.out.println("Please input your month number: ");
valueMonth=(yasin.nextInt());


switch (valueMonth) {
    case 1: months[valueMonth];
        break;       

}

我在开关盒和字符串数组方面出了点问题。如果不使用if-else.. 我怎么能解决这个问题。谢谢你.. ps:如果我在网站上犯了语法错误,那就不是了。

我就这样解决了这个练习;

String[] months={"a", "b" ,"c","d","e","f","g","h","i","j","k","l"}; 
int valueMonth; 
Scanner tara=new Scanner(System.in); 
System.out.println("Input Number : "); 
valueMonth=tara.nextInt(); 
if(valueMonth>0 && valueMonth<=12){
    System.out.println(months[ valueMonth- 1]);
}else{
    System.err.println("ERROR"); 
}

并且我想进行更多锻炼并尝试使用Switch-Case 语句来做。但它不起作用。也许我错过了什么或者它根本不工作 – Yasin Atagün 7 分钟前

【问题讨论】:

  • 你想用这个做什么?你得到什么错误? case 1,意味着它将执行冒号和中断之间的所有内容;如果月份 == 1。但看起来月份是一个数组......也许你的意思是把 switch(valueMonths).这是一个 int,比如 1。
  • 我的练习是从用户那里获得价值,并且通过这个输入月份在屏幕上。就像他说的4,程序会在屏幕上输入April。我只能使用 switch case 语句来做到这一点。但我在 java 的数组主题上。老师用if else做到了。我很轻松地做到了。但是如果可能的话,现在我试着用 switch case 来做。

标签: java arrays string switch-statement


【解决方案1】:

我相信关于 switch 语句的 Oracle Java 教程涵盖了这个确切的场景。

看看-https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

【讨论】:

    【解决方案2】:

    我本身不了解 Java,但我知道其他语言的 switch 语句。希望这个伪代码结构可以帮助您了解您做错了什么。

    switch ( WHAT_WILL_HAVE_THE_VALUE_IN_CASE ) {
      case POTENTIAL_VALUE_A: 
         ... lines of code that will execute if WHAT_WILL_HAVE_THE_VALUE_IN_CASE == POTENTIAL_VALUE_A ...
        break;
      case POTENTIAL_VALUE_B: 
         ... same thing as before, for VALUE_B ...
        break;
      default: 
         ... what will happen if none of the above applied ...
        break;
    }
    

    在您的情况下,WHAT_WILL_HAVE_THE_VALUE_IN_CASE 应该是包含月份数的变量。每个案例都应该有一个数字 (1-12),因为它是 POTENTIAL_VALUE。在每种情况的代码中,您将拥有一些将月份名称“April”打印到您正在使用的屏幕/控制台/文件的内容。

    祝你的任务顺利!

    【讨论】:

    • Ty 的帮助,我试图在相同的问题上做更多的练习。我希望它能让我对这些东西有更好的了解。
    【解决方案3】:

    你可以试试这样的 Switch 语句。

    String[] months = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Now","Dec"};
    int monthNumber;
    
    Scanner scan = new Scanner(System.in);
    
    System.out.println("Please input your month number: ");
    monthNumber = (scan.nextInt());
    
        switch(monthNumber) {
            case 1 :
                System.out.println(months[0]); 
                break;
            case 2 :
                System.out.println(months[1]); 
                break;
            case 3 :
                System.out.println(months[2]); 
                break;
            case 4 :
                System.out.println(months[3]); 
                break;
            case 5 :
                System.out.println(months[4]); 
                break;
            case 6 :
                System.out.println(months[5]); 
                break;
            case 7 :
                System.out.println(months[6]); 
                break;
            case 8 :
                System.out.println(months[7]); 
                break;                
            case 9 :
                System.out.println(months[8]); 
                break;
            case 10 :
                System.out.println(months[9]); 
                break;
            case 11 :
                System.out.println(months[10]); 
                break;
            case 12 :
                System.out.println(months[11]); 
                break;            
             default :
                System.out.println("Invalid Month Number");
          }
    

    或者你可以简单地这样做

          if(monthNumber>0 && monthNumber<=12){
            System.out.println(months[monthNumber-1]); 
          }else{
              System.out.println("Invalid Month Number");
          }
    

    【讨论】:

    • Usama,我知道这是我们不应该在这里感谢的规则。不过谢谢。还有一个问题。我不能不写几个月[10]然后写几个月[monthnumber-1]或类似的东西吗?
    【解决方案4】:

    您不能提供数组作为 switch-case 参数(如 switch (months))。

    不清楚你的意图是什么,请填写更多关于你想要完成什么的细节。

    看起来,只需调用months[valueMonth-1] 将返回正确的字符串。
    为防止输入无效,您可以使用try-catch 语句,如下所示:

    try {
        theMonth = months[valueMonth-1];
    } catch (ArrayOutOfBoundsException ex) {
        System.out.println("Invalid number!");
    }
    

    【讨论】:

    • 我想你的意思是valueMonth-1
    • 我重写了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2021-12-17
    相关资源
    最近更新 更多