有 Java 编程相关的问题?

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

java使用连接for循环构建字符串名

我想用Java创建一个运行时字符串名称
我尝试了一些类似于在JavaScript中使用的东西,但它正在打印分配给字符串状态名称0的值,如状态名称0

 public static void GetPaymentStatusList(){
        int i=0;
        String Status_Name_0="Open";
        String Status_ID_0="0";
        String Status_Name_1="Approved";
        String Status_ID_1="1";
        String Status_Name_2="Denied";
        String Status_ID_2="2";
        for(i=0; i<3; i++){
            Vars.PaymentStatusName_List.add("Status_Name_"+i);
            Vars.PaymentStatusId_List.add("Status_ID_"+i);
        }
    }

共 (3) 个答案

  1. # 1 楼答案

    实际上,您将字符串“Status_name_u”与“0”连接起来,这将导致“Status_name_0”,一个字符串,而不是Status_name_0这样的变量。据我所知,您需要字符串_name_I(I=0,1,2,…)的值。要使其正常工作,请使用字符串数组

    String[] string_names = { "Open", "Approved", "Denied" };
    
    int[] string_id = { 0, 1, 2 };
    

    :您可能不需要string_id数组,因为您可以在for循环中使用i的值

    并将它们添加到列表中,如下所示:

    Vars.PaymentStatusName_List.add(string_name[i]);
    
  2. # 2 楼答案

    StringBuilder param = new StringBuilder();
    param.append("shopid"
            + "=" + shopDetails.getShopId() + "&" + "username" + "=" + userDetail.getUserName() + "&" + "userid" + "=" + userDetail.getUserId() + "&");
    for (int i = 0; i < brandList.size(); i++) {
        param.append("brandId" + "[" + i + "]" + "=" + brandList.get(i).getBrandId()
                + "&" + "shortqua" + "[" + i + "]" + "=" + shortageStockList.get(i) + "&");
    }
    param.append("lattude" + "=" + String.valueOf(latitude) + "&" + "longitude" + "=" + String.valueOf(longitude));
    
  3. # 3 楼答案

    but it is printing value like Status_Name_0 instead Open

    因为这就是你添加到列表中的内容

     add("Status_Name_"+i);
    

    得到你想要的东西的方法是Map<String, String>

    Map<String, String> map = new HashMap<>();
    map.put("Status_Name_0", "Open");
    // ...
    
    for (int i=0;i<map.size();i++) {
        String open = map.get("Status_Name_"+i);
    }
    

    不过,你去上点课怎么样

    public class PaymentStatus {
    
        int id;
        String name;
    
        public PaymentStatus(int id, String name) {
            this.id = id; 
            this.name = name;
        }
    
        @Override 
        public String toString() {
            return String.format("%s[id: %d, name: %s]",
                getClass().getSimpleName(), id, name);
        }
    }
    

    而且List<PaymentStatus>比将整数附加到任何变量更可取

     public static List<PaymentStatus> getPaymentStatusList() {
        List<PaymentStatus> list = new ArrayList<>();
    
        paymentStatusList.add(new PaymentStatus(0, "Open"));
        paymentStatusList.add(new PaymentStatus(1, "Approved"));
        paymentStatusList.add(new PaymentStatus(2, "Denied"));
    
        return list;
    }