2011-05-31 70 views
0

我正在尝试做一些非常基本的事情!它不会工作:(。我觉得我正在进入圈子。Android/Java:将数据拆分为数组和显示

这里是简历:我希望用户输入一系列数字到EditText框中(用逗号分隔)。添加按钮后被选中时,split方法会将每个数字分隔成一个String []中的自己的槽。EVENTUALLY,如果我可以使这个部分工作,数字将从数组中拉出并转换为double。然后它们将用于一个或两个计算我已经尝试了几种不同的方法来完成这个工作,看起来问题来自分割方法或for循环,下面列出的代码返回一个空字符串:

另外,通过我的试用和错误我结束了一个返回方法calculate()。多少东西可以在一个onClick方法的cram?是这个ab广告创意?请根据需要作为残酷!我是Android新手。提前致谢。


package com.simplydesign.android.standarddev; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.*; 
import android.view.*; 

public class Main extends Activity { 
/** Called when the activity is first created. */ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final Button addBtn = (Button) findViewById(R.id.addBtn); 
    final EditText userData = (EditText) findViewById(R.id.editText1); 
    final TextView dataCollection = (TextView) findViewById(R.id.textView1); 

    addBtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      String[] rawData; 
      rawData = userData.getText().toString().split(","); 
      dataCollection.setText(calculate(rawData)); 
     } 

    }); 

} 

public String calculate(String[] a) { 

    String output = ""; 

    for (int i = 0; i < a.length - 1; i++) { 
     output += " " + a[i]; 
     } return output; 
} 
} 

回答

2

在你的for循环中,你应该从0到a.length - 1。这意味着循环必须是这样的:

for (int i = 0; i < a.length; i++) { /* ... */ } 

但你最好使用类似的东西:

public String calculate(String[] a) { 

    StringBuilder output = new StringBuilder(); 

    for (String s : a) { 
     output.append(' ').append(s); 
    } 
    return output.toString(); 
} 

不幸的是,我不认为它会完全地解决你的问题,但它肯定是一个固定错误。

+0

这似乎工作!这是我第一次使用StringBuilder。它没有列在我上个学期Java教科书中的任何地方。恩,想象一下。感谢所有人的帮助。 – atomSmasher 2011-05-31 19:09:15

+0

很高兴帮助!别客气。 – Michael 2011-05-31 19:13:00

1

尝试使用getEditableText()而不是geText()。

+0

-1除非EditText小部件具有不可编辑的文本,否则它将返回null。 NPE不是他的问题,所以我认为这不是解决方案。 – 2011-05-31 18:51:01

0

问题出在你的for循环中。

for (int i = 0; i < a.length - 1; i++) { 

...应该是...

for (int i = 0; i < a.length; i++) { 

我猜测在所有的测试,你只是使用逗号分隔2号,我马上发现了问题,因为我进入3数字到你的代码中。