简体   繁体   English

循环通过2D阵列

[英]Loop through 2D Array

I want to save two Strings in a 2D String Array and further use it for other methods. 我想在2D字符串数组中保存两个字符串,并进一步将其用于其他方法。

My Array: 我的阵列:

String[][] x = {{"Iron Ice Tea", "5"}, {"Clock Clock", "3"}, {"Shoe Telephone", "3"}};

My method: 我的方法:

  public static String getInsertedCustomerOrder(String[][] input) {
        String query = "";
        int x = 0;

    for (String[] product : input) {
        for (String count : product) {
            if (x == 0) {
            query = query + "((SELECT PRICE FROM PRODUCT WHERE NAME = '" + product + "') * " + count + " + ";
            } else {
            query = query + "(SELECT PRICE FROM PRODUCT WHERE NAME = '" + product + "') * " + count + " + ";
            }
            x++;
        }
    }

    if (query != null && query.length() > 0 && query.charAt(query.length() - 2) == '+') {
        query = query.substring(0, query.length() - 2);
    }

    query = query + ")";

    return query;
}

The output is: 输出是:

((SELECT PRICE FROM PRODUCT WHERE NAME = '[Ljava.lang.String;@1db9742') * Iron Ice Tea + (SELECT PRICE FROM PRODUCT WHERE NAME = '[Ljava.lang.String;@1db9742') * 5 + (SELECT PRICE FROM PRODUCT WHERE NAME = '[Ljava.lang.String;@106d69c') * Clock Clock + (SELECT PRICE FROM PRODUCT WHERE NAME = '[Ljava.lang.String;@106d69c') * 3 + (SELECT PRICE FROM PRODUCT WHERE NAME = '[Ljava.lang.String;@52e922') * Shoe Telephone + (SELECT PRICE FROM PRODUCT WHERE NAME = '[Ljava.lang.String;@52e922') * 3 )

Whereas it should be: 它应该是:

((SELECT PRICE FROM PRODUCT WHERE NAME = 'Iron Ice Tea') * 5))

Try this. 尝试这个。

public static String getInsertedCustomerOrder(String[][] input) {
    boolean first = true;
    String query = "";
    for (String[] product : input) {
        if (first)
            first = false;
        else
            query += " + ";
        query += "(SELECT PRICE FROM PRODUCT WHERE NAME = '" + product[0] + "') * "
               + product[1];
    }
    query = "(" + query + ")";
    return query;
}

And

String[][] input = { { "Iron Ice Tea", "5" }, { "Clock Clock", "3" }, { "Shoe Telephone", "3" } };
System.out.println(getInsertedCustomerOrder(input));

Result: 结果:

((SELECT PRICE FROM PRODUCT WHERE NAME = 'Iron Ice Tea') * 5 + (SELECT PRICE FROM PRODUCT WHERE NAME = 'Clock Clock') * 3 + (SELECT PRICE FROM PRODUCT WHERE NAME = 'Shoe Telephone') * 3)

Could you please try below code snippet - 你可以试试下面的代码片段 -

        String[][] x = {{"Iron Ice Tea", "5"}, {"Clock Clock", "3"}, {"Shoe Telephone", "3"}};


        int lastIndex = x.length-1;
        int currentIndex = 0 ;

        String query = "";

        for (String[] product : x) {

            if(currentIndex == lastIndex)
                query +="((SELECT PRICE FROM PRODUCT WHERE NAME = '"+product[0]+"') * "+product[1]+")";
            else
                query +="((SELECT PRICE FROM PRODUCT WHERE NAME = '"+product[0]+"') * "+product[1]+") + ";
            currentIndex++;
        }


        System.out.println("query : "+query);

product 产品

x[0] = {"Iron Ice Tea", "5"} - is object so will get object hash code x [0] = {“铁冰茶”,“5”} - 是对象,因此将获得对象哈希码

x[1] = {"Clock Clock", "3"} - is object will get object hash code x [1] = {“时钟时钟”,“3”} - 对象将获取对象哈希码

x[2] = {"Shoe Telephone", "3"} - is object will get object hash code x [2] = {“Shoe Telephone”,“3”} - 对象将获取对象哈希码


first iteration 第一次迭代

product[0] = x[0][0] = "Iron Ice Tea" , product[1] = x[0][1] = "5" 产品[0] = x [0] [0] =“铁冰茶”,产品[1] = x [0] [1] =“5”

second iteration 第二次迭代

product[0] = x[1][0] = "Clock Clock" , product[1] = x[1][1] = "3" product [0] = x [1] [0] =“Clock Clock”,产品[1] = x [1] [1] =“3”

third iteration 第三次迭代

product[0] = x[2][0] = "Shoe Telephone" , product[1] = x[2][1] = "3" product [0] = x [2] [0] =“Shoe Telephone”,产品[1] = x [2] [1] =“3”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM