2012-02-07 4 views
0

Я пытаюсь удалить записи сотрудника, который содержит «?» (Нулевые значения). база данных сотрудник выглядитудалить весь массив

34,45,56,?, 34
45,67,34,56,56
23,45,67,?, 90

используя следующий код я заменил вся строка, содержащая "?" с «0».

public void doRemoval(String filename) 
{ 
     contents = new Vector(); 
     inputstream = new FileInputStream(filename); 
     br = new BufferedReader(new InputStreamReader(inputstream)); 
     String string = ""; 
     while((string = br.readLine())!= null) 
     { 
      String[] split = string.split(","); 
      Vector vector = new Vector(); 
      for(int i=0; i<split.length; i++) 
       vector.add(split[i].trim()); 
      if(vector.contains("?")) 
      { 
       for(int i=0; i<split.length; i++) 
        split[i] = "0"; 
      } 
      contents.add(split); 
     } 

выход
0,0,0,0,0
45,67,34,56,56
0,0,0,0,0

теперь я хочу для удаления строк, содержащих «0». У меня нет идеи, как это сделать. Может кто-нибудь мне помочь. все, что я хочу сделать, это удалить строки, содержащие нулевые значения. есть ли другой способ его выполнения?

ответ

1

Написать это:

public void doRemoval(String filename) 
{ 
    contents = new Vector(); 
    inputstream = new FileInputStream(filename); 
    br = new BufferedReader(new InputStreamReader(inputstream)); 
    String string = ""; 
    while((string = br.readLine())!= null) 
    { 
     String[] split = string.split(","); 
     Vector vector = new Vector(); 
     for(int i=0; i<split.length; i++) 
      vector.add(split[i].trim()); 
     if(!vector.contains("?")) 
     { 
      contents.add(split); 
     } 

    } 

Вы не удалить их, вы просто не добавлять их.

+0

спасибо так много. это сработало. – darsha

+0

и можете ли вы сказать мне, что можно заменить нулевые значения на среднее значение этого конкретного столбца? – darsha

+0

Да, и это не сложно. Постарайтесь немного подумать об этом. Совет: сначала итерации один раз, чтобы вычислить среднее значение (фактически количество не-? И значение их суммы), а затем повторить второй раз, чтобы заменить '?' - s. Позаботьтесь о том, чтобы все значения были??. –

1

Если вам не нужно иметь промежуточный шаг со всеми нулями, вы можете:

if(!vector.contains("?")) { 
    contents.add(split); 
} 

вместо блока с:

if(vector.contains("?")) 
{ 
    for(int i=0; i<split.length; i++) 
    split[i] = "0"; 
} 
contents.add(split); 
Смежные вопросы