2013-06-27 28 views
1

我想從EditText的名爲point []的值中設置TextView中名爲total []的計算結果,但我能夠解析該值並將其放入在TextView中。它給我一個logcat錯誤java.lang.NumberFormatException:無法解析''作爲整數

06-27 02:27:01.467: E/AndroidRuntime(275): Caused by: java.lang.NumberFormatException: unable to parse '' as integer 

這是logcat中的錯誤。我想要在同一個佈局的edittext上連續添加整數值到文本視圖

public class player_name extends Activity { 
LinearLayout player_name; 
TableLayout ply_name; 
Bundle b,b1; 
List<TextView> allEds = new ArrayList<TextView>(); 
List<Button> allplus = new ArrayList<Button>(); 
List<Button> allminus = new ArrayList<Button>(); 
List<EditText> alledit = new ArrayList<EditText>(); 
List<TextView> alltotal = new ArrayList<TextView>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.player_name); 
    b1 = getIntent().getExtras(); 
    String[] result = b1.getStringArray("playerName"); 
    player_name = (LinearLayout) findViewById(R.id.player_name); 
    ply_name = new TableLayout(this); 
    player_name.addView(ply_name); 
    TableLayout.LayoutParams tableRowParams=new TableLayout.LayoutParams 
      (TableLayout.LayoutParams.MATCH_PARENT,TableLayout.LayoutParams.MATCH_PARENT,1.0f); 
    TextView[] ed1 = new TextView[result.length+1]; 
    Button[] plus = new Button[result.length+1]; 
    Button[] minus = new Button[result.length+1]; 
    EditText[] point = new EditText[result.length+1]; 
    TextView[] total = new TextView[result.length+1]; 
    TableRow[] TR= new TableRow[result.length+1]; 
    int[] totalscore = null; 
    String[] temp = null; 
    Button btnResult = new Button(player_name.this); 
    btnResult.setText(" click here to get RESULT"); 
    for(int i=0;i<=(result.length-1);i++)  { 
     ed1[i] = new TextView(player_name.this); 
     plus[i] = new Button(player_name.this); 
     minus[i] = new Button(player_name.this); 
     point[i] = new EditText(player_name.this); 
     total[i] = new TextView(player_name.this); 
     TR[i] = new TableRow(player_name.this); 
     allEds.add(ed1[i]); 
     alltotal.add(total[i]); 
     alledit.add(point[i]); 
     allplus.add(plus[i]); 
     allminus.add(minus[i]);   
     TR[i].addView(ed1[i]); 
     TR[i].addView(point[i]); 
     TR[i].addView(plus[i]); 
     TR[i].addView(minus[i]); 
     TR[i].addView(total[i]); 
     ply_name.addView(TR[i]); 
     TR[i].setLayoutParams(tableRowParams); 
     totalscore[i] =Integer.parseInt(point[i].getText().toString()); 
     temp[i] = "" + totalscore[i]; 
     ed1[i].setId(i); 
     ed1[i].setHeight(50); 
     ed1[i].setWidth(70); 
     ed1[i].setText(result[i]); 
     ed1[i].setTextColor(Color.CYAN); 
     total[i].setId(i); 
     total[i].setHeight(50); 
     total[i].setWidth(70); 
     total[i].setText(""+0); 
     total[i].setTextColor(Color.CYAN); 
     point[i].setId(i); 
     point[i].setHeight(50); 
     point[i].setWidth(120); 
     point[i].setHint(result[i]+"\'s"); 
     point[i].setInputType(InputType.TYPE_CLASS_NUMBER); 
     point[i].setTextColor(Color.BLACK); 
     plus[i].setId(i); 
     plus[i].setHeight(50); 
     plus[i].setWidth(50); 
     plus[i].setText("+"); 
     plus[i].setTextColor(Color.BLACK); 
     minus[i].setId(i); 
     minus[i].setHeight(50); 
     minus[i].setWidth(50); 
     minus[i].setText("-"); 
     minus[i].setTextColor(Color.BLACK); 
     plus[i].setOnClickListener(new OnClickListener() { 
      public void onClick(View v) {     
      } 
     }); 
     minus[i].setOnClickListener(new OnClickListener() { 
      public void onClick(View v) {     
      } 
     });   
    } 

    LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
    player_name.addView(btnResult, lp);  
    btnResult.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) {    
      Intent intent1 = new Intent(player_name.this,result.class); 
      startActivity(intent1);    
     } 
    });  


} 

} 
+0

一個空字符串不會被解析;首先檢查一個空白字符串。 –

+0

對於這樣一個小錯誤的傢伙來說,代碼太多了,你可以刪除所有期望的方法嗎? – Siddharth

回答

0

您需要檢查您解析的字符串是否是整數。試試這個代碼:

if (IsInteger(point[i].getText().toString())) 
    totalscore[i] =Integer.parseInt(point[i].getText().toString()); 

並添加此功能:

public static boolean IsInteger(String s) 
{ 
    if (s == null || s.length() == 0) return false; 
    for(int i = 0; i < s.length(); i++) 
    { 
     if (Character.digit(s.charAt(i), 10) < 0) 
     return false; 
    } 
    return true; 
} 

我希望這有助於