Java中在Main類中使用成員內部類
阿新 • • 發佈:2019-02-12
在一些程式題中
我們有時候遇到需要在Main類中使用成員內部類
如何在不物件化我們的Main類的前提下使用成員內部類呢?
示例程式碼如下:
package p1068; import java.util.ArrayList; import java.util.LinkedList; import java.util.PriorityQueue; import java.util.Queue; import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = scanner.nextInt(); m = (int) (m *1.5); PriorityQueue<Integer> people = new PriorityQueue<>(); ArrayList<Person> persons = new ArrayList<>(); int size = 0; int id; int score; for(int i=0; i<n; i++) { id = scanner.nextInt(); score = scanner.nextInt(); people.offer(score); boolean flag = false; for(int j=0; j<size; j++) { if(persons.get(j).score == score) { persons.get(j).id.offer(id); flag = true; break; } } if(!flag) { Person person2 = new Main().new Person(); person2.score = score; person2.id.offer(id); persons.add(person2); size++; } } Stack<Integer> people2 = new Stack<>(); for(int i=0; i<n; i++) { people2.push(people.poll()); } Queue<Integer> people3 = new LinkedList<>(); int temp = 0; for(int i=0; i<m; i++) { temp = people2.peek(); people3.offer(people2.pop()); } while(temp == people2.peek()) { people3.offer(people2.pop()); } System.out.println(temp + " " + people3.size()); int temp2 = -1; for(int i=0; i<m; i++) { if(temp2 != people3.peek()) { temp2 =people3.peek(); }else { people3.poll(); continue; } for(Person person2 : persons) { if(person2.score == people3.peek()) { int w = person2.id.size(); while(!person2.id.isEmpty()) { System.out.println(person2.id.poll() + " " + person2.score); } people3.poll(); break; } } } } private class Person{ PriorityQueue<Integer> id = new PriorityQueue<>(); int score; } }