-3

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

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

5 回答 5

0
It gives an output of zero..

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

的所有值 convertedValues 都是默认值,即 0

在这里你使用 product*=convertedValues[a]; // first time1*0 then0*0etc

使用以下代码:

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

现在看魔术

于 2013-09-16T08:29:25.957 回答
0

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

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

String []values = ( inputValues.getText().toString().split(","));
    int [] convertedValues = new int[values.length];
    int i=0;
    for(String temp:values){
        convertedValues[i++] = Integer.parseInt(temp);
}
于 2013-09-16T08:29:40.097 回答
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
}
于 2013-09-16T08:30:33.720 回答
0

我刚刚看到一个新的 int 数组.. 你把值放在哪里?即在声明 int [] convertValues = new int[values.length]; 之后

于 2013-09-16T08:30:53.483 回答
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];
}
于 2013-09-16T08:34:01.737 回答