1
public class SwitchExampleString
{
    public static void main(String args[])
    {
        String choice;
        switch(args)
        {
            case "day1" :
                choice="Sunday";
                System.out.println(choice);
                break;
            case "day2" :
                choice="Monday";
                System.out.println(choice);
                break;
            case "day3" :
                choice="Tuesday";
                System.out.println(choice);
                break;
            case "day4" :
                choice="Wednesday";
                System.out.println(choice);
                break;
            case "day5" :
                choice="Thursday";
                System.out.println(choice);
                break;
            case "day6" :
                choice="Friday";
                System.out.println(choice);
                break;
            case "day7" :
                choice="Saturday";
                System.out.println(choice);
                break;
            default :
                System.out.println("Wrong choice");
        }
    }
}

谁能帮助我,我想知道如何在 switch() 中使用字符串。上面显示的是我到目前为止所做的程序。但它显示错误。我安装的java版本是jdk6。

4

8 回答 8

5

问题是您打开的是字符串数组而不是字符串...

switch(args[0])

可以工作-假设您使用的是JDK7 ...并且为您的程序提供了一个参数-否则您会得到一个不错的ArrayOutOfBoundsException...

于 2013-10-04T09:35:53.820 回答
0

SwitchwithString是在 JDK 版本 7 中引入的。所以需要升级到jdk7。

于 2013-10-04T09:34:24.870 回答
0

检查您的choiceargs[0]

public class SwitchExampleString
{

public static void main(String args[])

{
    String choice="day1";
    switch(choice)
    {
case "day1" :
    choice="Sunday";
        System.out.println(choice);
    break;
case "day2" :
    choice="Monday";
        System.out.println(choice);
    break;
case "day3" :
    choice="Tuesday";
        System.out.println(choice);
    break;
case "day4" :
    choice="Wednesday";
        System.out.println(choice);
    break;
case "day5" :
    choice="Thursday";
        System.out.println(choice);
    break;
case "day6" :
    choice="Friday";
        System.out.println(choice);
    break;
case "day7" :
    choice="Saturday";
        System.out.println(choice);
    break;
    default :
System.out.println("Wrong choice");
    }
}
于 2013-10-04T09:35:57.687 回答
0

您需要从参数中提取一个字符串,而不是全部。

switch (args[0]) {
    case "day1" :
       //...

实际上,如果您要解码天数,则应该将该逻辑放在解析类中——并且可能也不会将它们编码为 dayN。还要考虑不区分大小写:

希望这只是您的测试用例..不是真正的设计。

不区分大小写(强制小写):

switch (args[0].toLowerCase()) {
    case "day1" :
       //...
于 2013-10-04T09:36:33.253 回答
0

在 JDK 7 版本中,您可以在 switch 语句的表达式中使用 String 对象:

public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
     String typeOfDay;
     switch (dayOfWeekArg) {
         case "Monday":
             typeOfDay = "Start of work week";
             break;
         case "Tuesday":
         case "Wednesday":
         case "Thursday":
             typeOfDay = "Midweek";
             break;
         case "Friday":
             typeOfDay = "End of work week";
             break;
         case "Saturday":
         case "Sunday":
             typeOfDay = "Weekend";
             break;
         default:
             throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
     }
     return typeOfDay;
}

switch 语句将其表达式中的 String 对象与与每个 case 标签关联的表达式进行比较,就好像它正在使用 String.equals 方法一样;因此,switch 语句中 String 对象的比较是区分大小写的。Java 编译器从使用 String 对象的 switch 语句生成的字节码通常比从链式 if-then-else 语句生成的字节码更有效。

更多信息请点击这里

于 2013-10-04T09:36:38.470 回答
0

switch 语句中的字符串,这是 Java SE 7 中最近添加的功能。

使用 JDK 7,您可以在 switch 语句中将字符串作为表达式传递。

于 2013-10-04T09:38:16.153 回答
0

您也可以将 switch 与 String 一起使用,但是您正在尝试使用 String 数组。选择一个您想要的参数并将其用作开关中的字符串。

例如:

String yourChoice = args[0];

switch(yourChoice)
{
    case "something":
        System.out.print("this");
    case "somethingElse":
        System.out.print("that");
}

此外,您必须使用 Java7 或更新版本,并且必须确保 args[0] 不为空 - 您必须在运行 JAR 时输入参数。

于 2013-10-04T09:39:09.170 回答
0

搜索项目硬币,你会得到更多的信息。或者您可以简单地转到此处: http://java.dzone.com/articles/java-7-%E2%80%93-project-coin-feature dzone,教程。

您可以从这里下载 java 7:http ://www.oracle.com/technetwork/java/javase/downloads/index.html

于 2013-10-04T09:39:47.663 回答