2017-04-03 77 views
-1

我想在Textview中显示值。但问题是,它在我的Textview中显示0。它来自int total = 0。我正在做setText,但它没有给我想要的价值。如何初始化变量无值

如果我删除0并保持int总数然后它显示变量总没有初始化。如果我初始化它,那么它显示Textview中的值。

public int getTotal(ArrayList<Integer> price){ 
    int total=0; 
    for(int i=0;i<price.size();i++){ 
     total= total+Integer.parseInt(String.valueOf(price.get(i))); 
    } 
    return total; 
} 

textViewamount=(TextView)findViewById(R.id.amountdisplay); 
textViewamount.setText(" "+getTotal(price)); 
+2

代替'总+的Integer.parseInt的(String.valu eOf(price.get(i)));'你可以简单地执行'total + price.get(i)'。如果'total'仍然是'0',你确定你的清单'价格'实际上是否包含物品? – QBrute

+0

那么,如果只想在至少有一个价格的情况下打印该值,则应该首先检查列表中是否至少有一个值。 – AxelH

+2

*“但它没有给我想要的价值”*你想要什么价值? 'ArrayList'中的值是什么?为什么要将一个'Integer'转换为'String'然后解析它,而不是仅仅使用'Integer'?请注意,将'total'初始化为'0'是正确的,因此您专注于问题的错误部分。 –

回答

0

这可能发生,如果ArrayList中的大小为0。在这种情况下,循环将不执行,如果是前

+0

当我调试它显示arraylist的大小为0. – Ajinkya

+0

笏我可以做改变列表大小。 – Ajinkya

+0

@Ajinkya在列表中添加一些实际元素 – QBrute

-1

你应该改变你的线路设置将返回总的初始值:

for(int i=0;i<price.size();i++) 
{ 
total = total+Integer.parseInt(String.valueOf(price.get(i))); 
} 
to: 
for(int i=0;i<price.size();i++) 
{ 
total+= (price.get(i)).intValue()); 
} 
+0

没有,如果我写这条线,它仍然显示0在textview – Ajinkya

+0

0是从int总= 0;但是,如果我保持整体;它显示总数未初始化。 – Ajinkya

0

嗨尝试这种希望这可以帮助你..

int[] price = {0, 1, 1, 10, 2, 5}; 
TextView total; 

int total1 = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    total = (TextView) findViewById(R.id.total); 

    btn = (Button) findViewById(R.id.btn); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      total1 = 0; 
      getTotal(); 
      total.setText("" + total1); 
     } 
    }); 
} 

private void getTotal() { 

    for (int i = 0; i < price.length; i++) { 
     total1 = total1 + price[i]; 
    } 
} 
+0

那么......每次有人点击某件东西时,总计应该增加并且不会重置?如果我点击三次,您的程序将显示“Total = 57”。十次会让我总共有“190”等等。 –

+0

是的但你可以设置标志为此然后这个问题解决 –

+0

设置total1 = 0;在getTotal()之前;在onClick –