-1

我想把输入的任何单词替换为“hi”这个词,我只是想让它在单词 put 上替换。当我运行它时,它崩溃了。

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

    final EditText r=(EditText)findViewById(R.id.editText1);
    String t=r.getText().toString();
    String[] t1= t.split(" ");


    for(int i=0;i<=t1.length;i++)
    {
        if(t[i].equals("hi") )
        {
            TextView uu=(TextView)findViewById(R.id.textView2);
            uu.setText(t[i]);
        }
    }
}
4

7 回答 7

1

只需将 t[i] 更改为 t1[i]

尝试这个

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

    final EditText r=(EditText)findViewById(R.id.editText1);
    String t=r.getText().toString();
    String[] t1= t.split(" ");


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

       if(t1[i].equals("hi") )
      {
         TextView uu=(TextView)findViewById(R.id.textView2);
         uu.setText(t1[i]);
      }


    }

 }
于 2013-04-02T06:46:40.390 回答
1

在 if 块中替换t1[]而不是t[] 。

尝试这个:

if(t1[i].equals("hi") )代替if(t[i].equals("hi") )

于 2013-04-02T06:55:33.700 回答
0

我在您的代码中发现了一些错误。不需要拆分。我认为你的代码应该是

final EditText r=(EditText)findViewById(R.id.editText1);
TextView uu=(TextView)findViewById(R.id.textView2);
String t=r.getText().toString();
  if(t.contains("hi"))
    {
        // do your stuff
    }
  else{
   //false
  }
于 2013-04-02T06:57:26.797 回答
0

你说你想用单词“hi”替换输入的任何单词。但是你正在检查这个词(我假设你想说 t1[i] 而不是 t[i])是否等于“hi”,然后你想把它放在第二个 textView 中?您将在原始输入中获​​得“hi”的数量。如果您想将任何单词更改为“hi”,只需删除 if 测试,您将获得与您输入的单词一样多的“hi”。

于 2013-04-02T06:59:21.267 回答
0

如果没有实际的错误,我们不能说太多,话虽如此,这部分:

for(int i=0;i<=t1.length;i++)
{    
    if(t[i].equals("hi") )
    {
        TextView uu=(TextView)findViewById(R.id.textView2);
        uu.setText(t[i]);
    }
}

将产生一个,ArrayOutOfBoundsException因为在 Java 中,数组是基于 0 的,最后可访问的数组位置是[arraySize] - 1.

将其更改为:

for(int i=0;i<t1.length;i++)
{    
    if(t[i].equals("hi") )
    {
        TextView uu=(TextView)findViewById(R.id.textView2);
        uu.setText(t[i]);
    }
}

应该解决问题(至少对于这个特定的例外)。

然而,这应该只遍历组成短语的字符,所以它永远不应该匹配hi。更改t[i]t1[i]in here:if(t1[i].equals("hi") )和可能的 here:uu.setText(t1[i]);应该会产生更好的解决方案。

就像仅供参考一样,使用有意义的名称永远不会受到伤害。

于 2013-04-02T06:46:09.257 回答
0

为什么每次都初始化

TextView uu=(TextView)findViewById(R.id.textView2);

将其保存在 oncreate() 一次

于 2013-04-02T06:47:19.727 回答
0
t[i].equals("hi")

比较对象。将其替换为 t1[i].tostring()=="Hi"

于 2013-04-02T06:47:44.770 回答