Java 使用字符串数组切换大小写

Java 使用字符串数组切换大小写,java,arrays,string,switch-statement,Java,Arrays,String,Switch Statement,我把开关盒和字符串数组弄错了。如果不使用if-else,如何解决此问题。。非常感谢。 ps:若我在网站上犯了语法错误,那个就不是那个样了 我就这样解决了这个问题, 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 n

我把开关盒和字符串数组弄错了。如果不使用
if-else
,如何解决此问题。。非常感谢。 ps:若我在网站上犯了语法错误,那个就不是那个样了

我就这样解决了这个问题,

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;       

}
String[]months={“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”};
int valueMonth;
扫描仪tara=新扫描仪(System.in);
System.out.println(“输入编号:”);
valueMonth=tara.nextInt();

如果(valueMonth>0&&valueMonth您不能提供数组作为开关盒参数(如
switch(months)

现在还不太清楚你的意图是什么,请填写更多关于你想要实现什么的细节

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

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语句的oraclejava教程涵盖了这个确切的场景


看一看-

我不懂Java本身,但我知道其他语言中的switch语句。希望这个伪代码结构能帮助您了解错误所在

try {
    theMonth = months[valueMonth-1];
} catch (ArrayOutOfBoundsException ex) {
    System.out.println("Invalid number!");
}
在您的案例中,WHAT_WILL_HAVE_THE_VALUE_In_case应该是一个包含月份数的变量。每个案例都应该有一个数字(1-12)作为其潜在的_值。在每个案例的代码中,您都会有一些东西将月份“April”的名称打印到您正在使用的屏幕/控制台/文件中


祝您的作业顺利!

您可以尝试类似于此的切换语句

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;
}
或者你可以简单地这样做

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)你想用这个做什么?你会得到什么错误?案例1,意味着它将执行冒号和中断之间的所有操作;if months==1。但是看起来monthNumber是一个数组…也许你想把开关(valueMonths)放在这是一个int,比如1。我的练习是从用户那里得到值,到这个输入月在屏幕上。比如,如果他说4,程序将在屏幕上输入April。我只能用switch-case语句来完成。但我用java上的数组主题。老师用if-else来完成。我很容易做到。但现在我试着用switch-case来完成,如果可能的话。我想你的意思是
valueMonth-1
我重写了这个问题。谢谢你的帮助,我试图在同样的问题上做更多的练习。我希望这能让我在这方面的知识更好。Usama,我知道这是一条规则,我们不应该在这里感谢。但是谢谢你。再问一个问题。我不能不写上几个月[10],写上几个月还是类似的?
      if(monthNumber>0 && monthNumber<=12){
        System.out.println(months[monthNumber-1]); 
      }else{
          System.out.println("Invalid Month Number");
      }