首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据Java中ArrayList的大小为变量分配char?

如何根据Java中ArrayList的大小为变量分配char?
EN

Stack Overflow用户
提问于 2015-07-03 10:06:41
回答 4查看 60关注 0票数 0

我试图使冗长的if-语句更加简洁;这就是它的原创性:

代码语言:javascript
运行
复制
char x;
if(list.size()== 1){
    x = 'a';
}
if(list.size()== 2){
    x = 'b';
}
if(list.size() == 3){
    x = 'c';
}
if(list.size() == 4){
    x= 'd';
}

有可能压缩这段代码吗?

已经谢谢了,Jari Van M

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-03 10:29:51

作为第一步,我们将代码重构为if-else级联,并备份我们将要经常使用的列表大小:

1:

代码语言:javascript
运行
复制
int size = list.size();
char x;
if(size == 1) {
    x = 'a';
} else if(size == 2) {
    x = 'b';
} else if(size == 3) {
    x = 'c';
} else if(size == 4) {
    x = 'd';
} else {
    //undefined
    x = '\0';
}

由于我们仅在本例中将列表大小与常量进行比较,因此可以进一步将其转换为switch语句:

2:

代码语言:javascript
运行
复制
char x;
switch (list.size()) {
    case 1: x = 'a'; break;
    case 2: x = 'b'; break;
    case 3: x = 'c'; break;
    case 4: x = 'd'; break;
    //undefined
    default: x = '\0'; break;
}

假设这不是随机选择的示例,而是真正的代码,我们看到需要一个从1开始的函数,该函数输出具有递增值的字母表('a''z'):

3:

代码语言:javascript
运行
复制
char x;
if(list.isEmpty()) {
    //undefined
    x = '\0';
} else {
    //our function
    x = (char) ('a' + list.size() - 1);
    if(x > 'z') {
        //undefined
        x = '\0';
    }
}
票数 0
EN

Stack Overflow用户

发布于 2015-07-03 10:10:11

更简单的选项:使用switch case

魔方选项:

代码语言:javascript
运行
复制
char x = (char) ('a' + list.size() - 1);
票数 0
EN

Stack Overflow用户

发布于 2015-07-03 10:10:31

基本上是将大小映射到字符。可以更容易做到:

代码语言:javascript
运行
复制
x = 'a' + list.size() - 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31204092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档