2013-04-01 3 views
0

Не могли бы вы рассказать мне, что не так с моей петлей for ниже? Я хочу, чтобы программа сканировала все слова в тексте и проверила их - если обнаружила, что она соответствует одному из множества слов, которые она заменяет. Например, если предложение в тексте «nona chan», я хочу, чтобы оно сканировало слово за словом, и если оно находит слово «нона» заменяемым словом «хорошо», переходите к следующему слову.Сканировать текст и заменить, если он соответствует

package com.example.split; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

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

     final EditText te1 = (EditText) findViewById(R.id.t1); 
     final EditText te2 = (EditText) findViewById(R.id.t2); 

     final Button b = (Button) findViewById(R.id.b1); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       //imva.setImageResource(R.id.b1); 

       String t = te1.getText().toString(); 
       String[] t1 = t.split(" "); 
       for (int i = 0; i <= t1.length; i++) { 

        do { 
         if (t1[i].equals("nona")) { 
          String v1 = t1[i]; 
          String v2 = " good "; 
          String a = v1.replace(v1, v2); 
          te2.setText(a); 
         } else if (t1[i].equals("chan")) { 
          String v1 = t1[i]; 
          String v3 = " job "; 
          String a = v1.replace(v1, v3); 
          te2.setText(a); 
         } 
        } while (te1.length() != 0); 
       } 

      } 
     }); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 
+0

Изменить я <= t1.length to i Pragnani

ответ

2

Вы превысите границы массива. заменить

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

с

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

it stil не работает <\ 3 – elektranona

0

В дополнение к ответу @Reimeus' и @ комментарий Pragnani, который оба являются правильными, что ваш for() цикл превышает длину массива на 1 ...

Вынуть do/while цикл, потому что он всегда будет зацикливаться бесконечно и повесить ваше приложение!
Замените затем петлю содержимым.


Кроме того, эта линия не делает ничего:

String a = v1.replace(v1, v2); 

Это просто устанавливает v2 в a, поэтому он может быть заменен:

String a = v2; 
+0

thenks alot для того, чтобы сказать мне :) я удалил его – elektranona

Смежные вопросы