有 Java 编程相关的问题?

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

java如何通过减少“if”语句的数量来改进这个简单的代码?

我是Java新手,正在为类赋值编写一个简单的代码。这是:

public class Digit {

    int value;
    int end;


public Digit(int numSystem, int value) {

    this.end = numSystem;
    this.value = value;

}

public int getValue(){
    return value;
}

public boolean increment(){
    while (value < end){
        value +=1;
    }
        if(value == end){
            value = 0;
            return true;
        }

        else{
            return false;
        }

        }

public String toString(){

    if (value < 9){

        return(String.valueOf(value));
    }
    if(value == 10){
        return("A");

    }
    if(value ==11){
        return("B");
    }
    if(value == 12){
        return("C");
    }
    if(value == 13){
        return("D");
    }
    if(value == 14){
        return("E");
    }
    if(value == 15){
        return("F");
    }
    if(value == 16){
        return("G");
    }
    if(value == 17){
        return("H");
    }
    if(value == 18){
        return("I");
    }
    if(value == 19){
        return("J");
    }
    if(value == 20){
        return("K");
    }
    if(value == 21){
        return("L");
    }
    if(value == 22){
        return("M");
    }
    if(value == 23){
        return("N");
    }
    if(value == 24){
        return("O");
    }
    if(value == 25){
        return("P");
    }
    if(value == 26){
        return("Q");
    }
    if(value == 27){
        return("R");
    }
    if(value == 28){
        return("S");
    }
    if(value == 29){
        return("T");
    }
    if(value == 30){
        return("U");
    }
    if(value == 31){
        return("V");
    }
    if(value == 32){
        return("W");
    }
    if(value == 33){
        return("X");
    }
        if(value ==34){

        return("Y");
    }
    else{
        return("Z");
    }


}


}

现在,我发现“toString()”方法看起来很可怕。我在想办法做同样的事情,但要让它更有效率。所以,我想我可以制作一个ArrayList来保存“value”的值,然后循环遍历它并给它分配一个字母。也许这是个好主意

如果是,我会怎么做?因为我每次尝试都会出错

谢谢大家抽出时间


共 (6) 个答案

  1. # 1 楼答案

    增量可以减少到:

    public boolean increment(){
        while (value < end){
            value +=1;
        }
    
        value = 0;
        return true;
    }
    
  2. # 2 楼答案

    您可以在开始时生成一个数组,在ToString中,您只需在数组中查找即可

    public String toString(){
        return arr[value];
    }
    

    不用说,您必须有一个包含值的数组

    public class Digit {
        static String[] arr = {"0","1",...,"A","B",..."Z"};
        ...
    
  3. # 3 楼答案

    您可以使用HashMap,然后存储int对及其对应的字符。然后可以使用myMap.get(30)检索charscter,例如,这是无论如何都要涉及的字符值的大if语句

  4. # 4 楼答案

    你可以研究^{}语句

    这段代码也起到了作用

    public String toString(){
        if (value < 9){
            return String.valueOf(value);
        } else {
            // Create a char array with values from a to z
            char[] chars = new char[26];
            int currentChar = 97;
            for (int i = 0; i < chars.length; i++){
                chars[i] = (char) currentChar;
                currentChar++;
            }
            return chars[value - 10];
        }
    }
    
  5. # 5 楼答案

    你可以用以下方法来简化它:

    public String toString(){
        if (value <= 9) return String.valueOf(value);
        else if (value >= 10 && value <= 35) return "" + (char) ('A' + value - 10);
        else return "Z";
    }
    

    请注意,在代码中toString返回Zifvalue == 9,这可能是一个错误

  6. # 6 楼答案

    你可以把int转换成charA’是65,所以输入值+55将是ASCII字符