java - 如何在Java中比较字符和数字
问题描述
我遇到了一个问题,我认为这是将字符与数字进行比较。
String FindCountry = "BB";
Map<String, String> Cont = new HashMap <> ();
Cont.put("BA-BE", "Angola");
Cont.put("9X-92", "Trinidad & Tobago");
for ( String key : Cont.keySet()) {
if (key.charAt(0) == FindCountry.charAt(0) && FindCountry.charAt(1) >= key.charAt(1) && FindCountry.charAt(1) <= key.charAt(4)) {
System.out.println("Country: "+ Cont.get(key));
}
}
在这种情况下,代码打印“安哥拉”,但如果
String FindCountry = "9Z"
它不打印任何东西。我不确定我认为问题在于它无法比较'2'大于'Z'。在那个例子中,我只有两个 Cont.put(),但在我的文件中,我得到了更多,而且其中很多不仅仅是字符。我和他们有问题。
将 char 与 number 进行比较的最聪明和最好的方法是什么?实际上,如果我设置一个规则,比如“1”大于“Z”,那没关系,因为我需要这种更大的方式:AZ-9-0。
谢谢!
解决方案
您可以使用查找“表”,我使用了String
:
private static final String LOOKUP = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
然后将字符与 进行比较indexOf()
,但它看起来很乱,可能更容易实现,我现在想不出更容易的东西:
String FindCountry = "9Z";
Map<String, String> Cont = new HashMap<>();
Cont.put("BA-BE", "Angola");
Cont.put("9X-92", "Trinidad & Tobago");
for (String key : Cont.keySet()) {
if (LOOKUP.indexOf(key.charAt(0)) == LOOKUP.indexOf(FindCountry.charAt(0)) &&
LOOKUP.indexOf(FindCountry.charAt(1)) >= LOOKUP.indexOf(key.charAt(1)) &&
LOOKUP.indexOf(FindCountry.charAt(1)) <= LOOKUP.indexOf(key.charAt(4))) {
System.out.println("Country: " + Cont.get(key));
}
}
推荐阅读
- css - 一起使用 Font Awesome 和 Fort Awesome
- android - 如何在颤动的文本字段上添加复制操作
- ios - 如何在 Swift 中使用枚举中的函数选择枚举值?
- sql - 运行时错误'3704':关闭对象时不允许操作
- javascript - Sequelize raw findAll 返回不需要的 ID 列
- java - Spring 表达式语言:@Bean 找不到自己
- python - Opencv Python维护空像素
- java - 在 spring-boot 中将 protobuf 作为 JSON 发送
- ios - Urban Airship 不允许上传生产证书
- solr - 怎么可能只获得 EXT:solr 中 EXT:news 记录的第一个相关 FAL 图像?