Java 方法将2d数组的元素与另一个2d数组的元素相乘

Java 方法将2d数组的元素与另一个2d数组的元素相乘,java,arrays,Java,Arrays,我在将2d字符串数组的元素乘以另一个字符串数组的元素时遇到问题。 代码如下: public static String updateString(String[][] array, String[] prices) { String [][] newArray = new String[array.length][]; for(int row = 0; row < prices.length; row++) { if (array[row][0].

我在将2d字符串数组的元素乘以另一个字符串数组的元素时遇到问题。 代码如下:

public static String updateString(String[][] array, String[] prices)
{
    String [][] newArray = new String[array.length][]; 
    for(int row = 0; row < prices.length; row++)
    {
        if (array[row][0].equals(prices[row]))
        {
            for(int i = 0; row <array.length; row++)
            {
                newArray[row][i+1] = array[row][i+1] * prices[i+1];
            }
        }
    }
}

如您所见,每个数组的第一列列出了城市,因此如果城市匹配,我需要将第一个数组的元素乘以omaha(7.5)。

尝试将值转换为整数或双精度类型。当前您正在尝试将字符串值相乘。

如果您别无选择,只能使用数字应该是最佳选择的字符串,请尝试将字符串转换为如下所示的数字-

String str = "22.43";
try{
    double str = Double.parseDouble(str);
}catch(NumberFormatException nfe){
    nfe.printStackTrace(); 
}
这只是一个例子。您可能想了解使用打印堆栈跟踪的缺点-
您的内部循环有两个问题

1) 你需要在某个时刻增加“i”。您的循环中需要有:

i++;
当前,您正在遍历内部循环中的行而不是列,请删除:

row++;
2) 您从不初始化newArray的列。由于您使用的是静态二维数组,因此此处应显示最大列数作为最大宽度

String [][] newArray = new String[array.length][MAX_WIDTH];
正如其他人提到的,在对变量进行任何“计算”之前,您肯定需要将字符串转换为double。在这里,Java自动将Double(类)转换为Double(数据结构)


您要将
字符串相乘
,首先将它们转换为
双精度
,然后相乘 首先,当您返回2d数组时,您不返回任何东西,并且还将返回类型从
String
更改为
String[][]

这是密码

public static String [][]updateString(String[][] array, String[] prices)
    {
        String [][] newArray = new String[array.length][]; 
        for(int row = 0; row < prices.length; row++)
        {
            if (array[row][0].equals(prices[row]))
            {
                for(int i = 0; i<array.length; i++)
                {
                    Double d=Double.parseDouble(array[row][i+1]) * Double.parseDouble(prices[i+1]);
                    newArray[row][i+1] = d.toString();
                }
            }
        }
        return newArray;
    }
}
publicstaticstring[]updateString(String[]array,String[]prices)
{
字符串[][]新数组=新字符串[array.length][];
对于(int row=0;row对于(int i=0;i将字符串转换为浮点数…,还要检查在解析文件时数组中的值是否正确
try {
    double val = Double.parseDouble(string);
} catch (NumberFormatException e) {
    e.printStackTrace();
}
public static String [][]updateString(String[][] array, String[] prices)
    {
        String [][] newArray = new String[array.length][]; 
        for(int row = 0; row < prices.length; row++)
        {
            if (array[row][0].equals(prices[row]))
            {
                for(int i = 0; i<array.length; i++)
                {
                    Double d=Double.parseDouble(array[row][i+1]) * Double.parseDouble(prices[i+1]);
                    newArray[row][i+1] = d.toString();
                }
            }
        }
        return newArray;
    }
}