gpt4 book ai didi

java - 将 if-else 转换为 switch case 会抛出错误 [Java]

转载 作者:行者123 更新时间:2023-12-01 21:30:50 24 4
gpt4 key购买 nike

我试图将我的 if-else 语句转换为 switch case,但我遇到了以下问题。

旧代码:

if (properties.get("database").toString().equalsIgnoreCase("SQLSERVER")) {
manager = new CManagingSQLServer();
} else if (properties.get("database").toString().equalsIgnoreCase("ORACLE")){
manager = new CManagingOracle();
} else if (properties.get("database").toString().equalsIgnoreCase("MYSQL")){
manager = new CManagingMySQL();
} else {
System.out.println("Not supported DB: " + properties.get("database").toString() + "\n");
System.out.println("Supported DB:");
System.out.println("- ORACLE");
System.out.println("- SQLSERVER");
System.out.println("- MYSQL");
System.exit(0);
}

新代码:

String database = properties.get("database").toString();
switch (database) {
case database.equalsIgnoreCase("SQLSERVER"):
manager = new CManagingSQLServer();
break;
case database.equalsIgnoreCase("ORACLE"):
manager = new CManagingOracle();
break;
case database.equalsIgnoreCase("MYSQL"):
manager = new CManagingMySQL();
break;

default:
System.out.println(database + "is not a supported database.");
System.exit(0);
break;
}

首先,字符串 database 抛出一个错误,我必须将设置/属性(实际上不知道)更改为 1.7 版?!这样做之后,我的案例现在抛出错误。他们说:类型不匹配无法从 boolean 值转换为字符串

我读了其他 SO-thread,他们说我必须尝试 (String)something 或 something.ToString()。但是这两种情况都没有用,我不明白上面提到的 1.7 版的变化有什么变化。我怎样才能让我的案例再次发挥作用?

最佳答案

将数据库变量更改为

String database = properties.get("database").toString().toUpperCase();

并将大小写切换为

案例“SQLSERVER”:

目前,您收到错误是因为 database.equalsIgnoreCase("SQLSERVER") 返回 boolean 值,但您正在切换 database,它是一个字符串。

此外,您至少需要使用 Java 7,因为之前的 Java 版本不支持 String 上的 switch case。

关于java - 将 if-else 转换为 switch case 会抛出错误 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62499739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com