我的代码就是这样...它输出为零...请帮助我......提前谢谢:)
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));
答案 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
。
它不会存储正在读取的值。你可以这样做,以实现你想要的:
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];
}