2017-09-15 62 views
-1

該程序用於打印學生的詳細信息和所有內容。研究所有activity。他們是可用的活動,學生需要從中選擇任何人。然後我想打印選擇每項活動的學生人數。從列表中選擇參數

例如:

游泳:2名學生。

參加比賽:1名學生。

繪畫:1名學生。

演唱:0等..

幫我打印如上

學生班級

public class Student { 
    int rollNo, yearOfStudy; 
    String fName, lName, activity; 
    Student(int rollNo, String fName, String lName, int yearOfStudy, String activity) { 
     this.rollNo = rollNo; 
     this.fName = fName; 
     this.lName = lName; 
     this.yearOfStudy = yearOfStudy; 
     this.activity = activity; 
    } 

    @Override 
    public String toString() { 
     return new StringBuilder().append("RollNo.").append(rollNo).append(", ").append(fName).append(" ").append(lName) 
       .toString(); 
    } 
    void display() { 
     System.out.println("Roll Number: " + rollNo + "\nName: " + fName + " " + lName + "\nYear Of Study: " 
       + yearOfStudy + "\nActivity: " + activity); 
     System.out.println("-------------------"); 
    } 
} 

主類

public class Main { 

public static void main(String[] args) { 

Student s1 = new Student(1, "Alex", "Iwobi", 2013, "Swimming"); 
Student s2 = new Student(2, "Denis", "Suarez", 2013, "Painting"); 
Student s3 = new Student(3, "Gerard", "Deulofeu", 2013, "Swimming"); 
Student s4 = new Student(4, "Emre", "Can", 2013, "Playing"); 

Institute in = new Institute(); 

in.studentDetails(s1); 
in.studentDetails(s2); 
in.studentDetails(s3); 
in.studentDetails(s4); 

in.print(); 
in.messFood(); 

} 

} 

研究所類

public class Institute { 

ArrayList studentList = new ArrayList(); 

void studentDetails(Object S) { 

studentList.add(S); 

} 

void print() { 
Iterator<Student> it = studentList.iterator(); 
while (it.hasNext()) { 
Student s = (Student) it.next(); 
s.display(); 
} 
} 

void messFood() { 
for (int j = 1; j < 5; j++) { 

Student randomStudent = (Student) getRandomItem(studentList); 

System.out.println("Mess food Incharge for week " + j + " : " + randomStudent.toString()); 

} 
} 

private static <T> T getRandomItem(List<T> studentList) { 
return studentList.get(new Random().nextInt(studentList.size())); 
} 

void act() { 
Set<String> activity = new LinkedHashSet<String>(); 
activity.add("Swimming"); 
activity.add("Reading"); 
activity.add("Playing"); 
activity.add("Singing"); 
activity.add("Painting"); 
} 
} 
+0

你現在得到什麼輸出? – Mritunjay

+4

您沒有提出任何問題。你有什麼問題? –

+0

不知道如何從列表中獲取單個參數。例如:'學生s1 =新生(1,「Alex」,「Iwobi」,2013,「游泳」); 「我只想在外面游泳來計數。 – shamil

回答

1

這裏你去::只需從主類調用此方法。

輸出是:

{播放= 1,游泳= 2,繪畫= 1}

public void numberOfStudentsWhoSelectedEachActivity(){ 
     HashMap<String, Integer> map = new HashMap<>(); 
     for(Object s : studentList){ 
      Student student = (Student) s; 
      String act = student.activity; 
      if(map.get(act) == null){ 
       map.put(act, 1); 
      } 
      else{ 
       map.put(act, map.get(act)+1); 
      } 
     } 
     System.out.println(map); 
    } 
+0

不要有'act()'的鏈接。也想打印唱歌:0 – shamil

1
Map<String, int> activity = new HashMap<>(); 

void act() { 
activity.add("Swimming",0); 
activity.add("Reading",0); 
activity.add("Playing",0); 
activity.add("Singing",0); 
activity.add("Painting",0); 
} 

加入

void studentDetails(Object S) { 
Student s = (Student) S; 
//update activity 
map.put(s.activity, map.get(s.activity) + 1); 
studentList.add(S); 
} 

時,你可以打印後

0

您可以使用集合, 您需要將您的studentList傳遞給它。

Set<String> studentSet = new HashSet<String>(students); 
for (String key : studentSet) { 
    System.out.println(key + ": " + Collections.frequency(students, key)); 
} 
+0

輸出將是游泳:2 播放:1 繪畫:1 – Archana