Search code examples
javafor-loophbase

What's wrong with the for() loop in my case?


I'm a beginner in Java and HBase, I want to shorten my code so I use a for-loop in my code. If the input String stumber is "AAAA0000?0", the results should be "AAAA000000","AAAA000010","AAAA000020","AAAA000030" …… "AAAA000090"

This origin code works well:

    List<Get> gets = new ArrayList<>();  
    for (String stumber : stumbersArr) {
        if(stumber.charAt(8) == '?'){
        get = new Get((stumber.replace(stumber.charAt(8), '0')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '1')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '2')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '3')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '4')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '5')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '6')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '7')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '8')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        get = new Get((stumber.replace(stumber.charAt(8), '9')).getBytes());  
        get.setMaxVersions(versions);  
        gets.add(get);  
        }else{
            get = new Get(stumber.trim().getBytes());  
            get.setMaxVersions(versions);  
            gets.add(get);  
        }
    }  
    Result[] results = table.get(gets);  

But after I modify with for-loop, the code failed to give out the results. Why?

    List<Get> gets = new ArrayList<>();  
    for (String stumber : stumbersArr) {
        if(stumber.charAt(8) == '?'){
            for (int i =0; i<10; i++){
                get = new Get((stumber.replace(stumber.charAt(8), 'i')).getBytes());  
                get.setMaxVersions(versions);  
                gets.add(get);  
            }
        }else{
            get = new Get(stumber.trim().getBytes());  
            get.setMaxVersions(versions);  
            gets.add(get);  
        }
    }  
    Result[] results = table.get(gets);  

Solution

  • Inside for loop should be:

    get = new Get((stumber.replace(stumber.charAt(8), (char)(i + '0'))).getBytes()); 
    

    what gives you i value as a char.