如何计算数组的乘积?

时间:2013-09-16 08:25:00

标签: java android

我的代码就是这样...它输出为零...请帮助我......提前谢谢:)

    final AutoCompleteTextView inputValues = (AutoCompleteTextView) findViewById(R.id.txt_input);

    final TextView GeoMean= (TextView) findViewById(R.id.txt_GeoMean);

    Button btnCalculate = (Button) findViewById(R.id.btncalculate);
    btnCalculate.setOnClickListener(new OnClickListener(){


        @Override
        public void onClick(View agr0) {

String []values = ( inputValues.getText().toString().split(","));
    int [] convertedValues = new int[values.length];

                int product=1;
                    for(int a = 1; a <=convertedValues.length; a++){

                   product*=convertedValues[a];
               }


                tv_product.setText(Double.toString(product));

5 个答案:

答案 0 :(得分:0)

It gives an output of zero..

因为 int[] convertedValues = new int[values.length];

convertedValues 的所有值均为默认,即0

此处您正在使用 product*=convertedValues[a]; // first time 1 * 0 then 0 * 0 etc

使用以下代码:

for (int a = 0; a < convertedValues.length; a++) {
            convertedValues[a]=Integer.parseInt(values[a]);// Just add this Line
            product *= convertedValues[a];
    }

现在看魔术

答案 1 :(得分:0)

int [] convertedValues = new int[values.length];此语句创建一个长度为values.length

的int数组

它不会存储正在读取的值。你可以这样做,以实现你想要的:

String []values = ( inputValues.getText().toString().split(","));
    int [] convertedValues = new int[values.length];
    int i=0;
    for(String temp:values){
        convertedValues[i++] = Integer.parseInt(temp);
}

答案 2 :(得分:0)

关于:

String []values = ( inputValues.getText().toString().split(","));
int [] convertedValues = new int[values.length];

您创建了一个大小相同的整数数组,但似乎缺少的是将信息从values传输到convertedValues

如果没有该传输,整数数组将保持其初始状态,即零值的数组。

您需要执行以下操作:

for (int i = 0; i < values.length; i++)
    convertedValues[i] = Integer.parseInt(values[i]);

(Java中基于零的数组,不像你想象的那样基于一个数组,并且在尝试使用它之前确保你捕获NumberFormatException以防字符串无效)但它可能不是创建一个全新的数组所必需的。您可以将计算循环修改为:

for (int i = 0; i <= values.length; i++)
    product *= Integer.parseInt(values[i]);

因此,就整个代码段而言,以下可能是一个很好的起点:

String[] values = inputValues.getText().toString().split(",");
int product = 1;
try {
    for (int i = 0; i < values.length; i++) {
        product *= Integer.parseInt(values[i]);
    }
} catch (NumberFormatException e) {
    product = 0; // or something more suitable
}

答案 3 :(得分:0)

我只看到一个新的int数组..你在哪里放置值?即在语句int [] convertedValues = new int [values.length];

之后

答案 4 :(得分:0)

以下更改应该适合您: -

for(int a = 0; a <convertedValues.length; a++){ // "a from 1" to "a<=n" will give an ArrayIndexOutOfBoundsException
    convertedValues[a] = Integer.parseInt(values[a]); // Transfer value from "values" to "convertedValues"
    product*=convertedValues[a];
}