我正在尝试做一些非常基本的事情!并且它不会工作:(。我觉得我要进入圈子。
以下是纲要:我希望用户在EditText框中输入一系列数字(以逗号分隔)。选择添加按钮后,split方法会将每个数字分隔为String []中自己的插槽。事实上,如果我可以让这部分工作,数字将从数组中拉出并转换为双精度数。然后它们将用于计算或两次。我尝试了几种不同的方法来实现这一点,似乎问题来自split方法或for-loop。下面列出的代码返回一个空字符串。
另外,通过我的试验和错误,我最终得到了一个返回方法calculate()。在onClick方法中可以填充多少东西?这是个坏主意吗?请尽可能残酷!我是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;
}
}
答案 0 :(得分: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();
}
不幸的是,我认为它不会完全解决您的问题,但它肯定会修复一个错误。
答案 1 :(得分:1)
尝试使用get editable Text()而不是geTtext()。
答案 2 :(得分:0)
问题出在你的for循环中。
for (int i = 0; i < a.length - 1; i++) {
......应该......
for (int i = 0; i < a.length; i++) {
我在你所有的测试中猜测,你只是使用逗号分隔的2个数字,我在你的代码中输入3个数字时就发现了问题。