簡體   English   中英

在我的情況下,for()循環有什么問題?

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

我是Java和HBase的初學者,我想縮短代碼,因此在代碼中使用了for循環。 如果輸入的字符串stumber為“ AAAA0000?0”,則結果應為“ AAAA000000”,“ AAAA000010”,“ AAAA000020”,“ AAAA000030”……“ AAAA000090”

此原始代碼運行良好:

    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);  

但是在用for循環修改后,代碼無法給出結果。 為什么?

    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);  

您可以使用Character.forDigit()將int i轉換為char,例如:

get = new Get((stumber.replace(stumber.charAt(8), Character.forDigit(i, 10))).getBytes());  

內部for循環應為:

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

是什么讓i看中了char

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM