有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

列出如何根据Java中ArrayList的大小为变量分配字符?

我试图使一个长if语句更加紧凑;最初是这样的:

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';
}

是否有可能压缩此代码

已经谢谢了, 贾里·范·M


共 (3) 个答案

  1. # 1 楼答案

    char x;
    int size = list.size();
    if (size >= 1 && size <= 4) {
        x = "zabcd".charAt(size); 
    }
    
  2. # 2 楼答案

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

    x = 'a' + list.size() - 1;
    
  3. # 3 楼答案

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

    1:

    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:

    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:

    char x;
    if(list.isEmpty()) {
        //undefined
        x = '\0';
    } else {
        //our function
        x = (char) ('a' + list.size() - 1);
        if(x > 'z') {
            //undefined
            x = '\0';
        }
    }