2017-01-30 3 views
-1
public static int processData(ArrayList<String> array) 
    { 
     ArrayList <Integer> no=new ArrayList<Integer>(); 
     Iterator it=array.iterator(); 
     String[] strValues; 
while(it.hasNext()) 
      { 
       strValues = array.toString().split(","); 
       System.out.println(it.next()); 
       strValues = array.toString().split(","); 
       no.add(0,strValues[2]); 
       no.add(1,strValues[6]); 
       strValues = array.toString().split(","); 
       }   
     return 1; 
    } 

    public static void main (String[] args) { 
     ArrayList<String> inputData = new ArrayList<String>(); 
     try { 
      Scanner in = new Scanner(new BufferedReader(new FileReader("D:\\dmo\\input.txt"))); 
      while(in.hasNextLine()) { 
       String line = in.nextLine().trim(); 
       if (!line.isEmpty()) // Ignore blank lines 
        inputData.add(line); 
      } 
      int retVal = processData(inputData); 
      PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("D:\\dmo\\output.txt"))); 
      output.println("" + retVal); 
      output.close(); 
     } catch (IOException e) { 
      System.out.println("IO error in input.txt or output.txt"); 
     } 
    } 
} 

ввода содержит записи как 20, AB CD, 55, 876000 22, Джон картер, 57,987520 23, abrahim, 55,5420130 24, мария, 55,8952403 25, серена, 57,7895421Как получить целое значение от ArrrayList <String> (это содержит строку, а также номера) текстовый файл

Эти данные передаются как ArrayList массив в функцию ProcessData(). Я хочу рассчитать среднюю зарплату того же идентификатора отдела. Например. Avg of 55 de

+0

is '987520 23' a * code * или * number *? у него есть пробел между ними. – msagala25

+0

ввод текста содержит 20, AB CD, 55, 876000 22, Джон картер, 57,987520 23, abrahim, 55,5420130 24, мария, 55,8952403 25, серена, 57,7895421 первый не является электронной -ид, 2 - это имя, 3-е место, 4 - зарплата – Prince

+0

@ LKTN.25 его номер, его 22, Джон Картер, 57,987520, – Prince

ответ

0

create String str_seperate = ""; итерация массива с регулярным exp. do str = array.remove (index); и использовать Scanner sc = new Scanner (str) .useDemiliter ("\ s *, \ W \ s *"), чтобы узнать данные int и string.

0

Создание объекта person на каждой строке (при условии, что каждая строка будет содержать данные одного человека) и добавления их в список. При расчете зарплаты на один отдел сначала отфильтровывают лиц для этого отдела, а затем рассчитывают общую зарплату и затем делят ни одного человека в этом отделе. Надеюсь, это поможет.

public class Person { 
    private int id; 
    private String name; 
    private int deptId; 
    private double salary; 

    public Person() { 
    } 

    public Person(int id, String name, int deptId, double salary) { 
     this.id = id; 
     this.name = name; 
     this.deptId = deptId; 
     this.salary = salary; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getDeptId() { 
     return deptId; 
    } 

    public void setDeptId(int deptId) { 
     this.deptId = deptId; 
    } 

    public double getSalary() { 
     return salary; 
    } 

    public void setSalary(double salary) { 
     this.salary = salary; 
    } 

    @Override 
    public String toString() { 
     return "Person{" + 
       "id=" + id + 
       ", name='" + name + '\'' + 
       ", deptId=" + deptId + 
       ", salary=" + salary + 
       '}'; 
    } 
} 

public class Main { 
    /*public static int processData(ArrayList<String> array) { 
     ArrayList<Integer> no = new ArrayList<Integer>(); 
     Iterator it = array.iterator(); 
     String[] strValues; 
     while (it.hasNext()) { 
      strValues = array.toString().split(","); 
      System.out.println(it.next()); 
      strValues = array.toString().split(","); 
      no.add(0, strValues[2]); 
      no.add(1, strValues[6]); 
      strValues = array.toString().split(","); 
     } 
     return 1; 
    }*/ 

    public static void main(String[] args) { 
     List<Person> personList = new ArrayList<>(); 
     try { 
      Scanner in = new Scanner(new BufferedReader(new FileReader("input.txt"))); 
      while (in.hasNextLine()) { 
       String line = in.nextLine().trim(); 
       if (!line.isEmpty()) // Ignore blank lines 
        personList.add(getPerson(line)); 
      } 
//   int retVal = processData(inputData); 
//   PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("output.txt"))); 
//   output.println("" + retVal); 
//   output.close(); 

      double avgSalary = getAvgSalary(personList, 55); 
      System.out.println(avgSalary); 

     } catch (IOException e) { 
      System.out.println("IO error in input.txt or output.txt"); 
      e.printStackTrace(); 
     } 
    } 

    private static Person getPerson(String str) { 
     String[] strings = str.split(","); 
     Person person = new Person(Integer.valueOf(strings[0].trim()), strings[1].trim(), Integer.valueOf(strings[2].trim()), Double.valueOf(strings[3].trim())); 
     System.out.println(person); 
     return person; 
    } 

    private static double getAvgSalary(List<Person> personList, int deptId) { 
     List<Person> deptPersonList = new ArrayList<>(); 
     for (Person person : personList) { 
      if (person.getDeptId() == deptId) { 
       deptPersonList.add(person); 
      } 
     } 

     double totalSalary = 0; 
     for (Person person : personList) { 
      totalSalary += person.getSalary(); 
     } 

     return totalSalary/deptPersonList.size(); 
    } 
} 
+0

измените местоположение файла input.txt как ваше. Я не использовал output.txt, поэтому прокомментировал это. Надеюсь, это поможет. – mhshimul

+0

nope ... я должен прочитать этот текстовый файл. и я только разрешил внести изменения в processData .. int processData (ArrayList массив) retuns string .. например. 20, AB CD, 55, 876000, 22, John carter, 57,987520, 23, abrahim, 55,5420130, 24, mariya, 55,8952403, 25, serena, 57,7895421 ... затем, как извлечь 55, 876000, 57,987520 и т. Д. Из строки, чтобы калоцировать среднюю величину от де-td от ввода ... – Prince

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

  • Нет связанных вопросов^_^