首页 > 代码库 > POJ 4069:买手机
POJ 4069:买手机
这里给出一个编译错误的程序,虽然是编译错误,不过我也不太想改过来了。只是因为我用了走超出范围的类型ArrayList<Phone>,这里的Phone是我自定义的一个内部类。
完整程序如下,大家可以用数组改过来:
1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 Scanner in = new Scanner(System.in); 8 int n = in.nextInt(); 9 for (int i = 0; i < n; i++) { 10 int price = in.nextInt(); 11 int count = in.nextInt(); 12 ArrayList<Phone> phones = new ArrayList<>(); 13 for (int j = 0; j < count; j++) { 14 Phone phone = new Phone(); 15 phone.setmPhoneId(in.nextInt()); 16 phone.setmPrice(in.nextInt()); 17 phone.setmSalesVolume(in.nextInt()); 18 phone.setmAverageScore(in.nextInt()); 19 phones.add(phone); 20 } 21 22 phones = getPhones(phones); 23 for (int j = 0; j < phones.size(); j++) { 24 if (phones.get(j).getmPrice() <= price) { 25 System.out.println(phones.get(j).getmPhoneId()); 26 } 27 } 28 } 29 } 30 31 private static ArrayList<Phone> getPhones(ArrayList<Phone> ps) { 32 for (int i = 0; i < ps.size(); i++) { 33 for (int j = i + 1; j < ps.size(); j++) { 34 if (ps.get(i).getmSalesVolume() < ps.get(j).getmSalesVolume()) { 35 // 交换 36 Phone phone = new Phone(); 37 phone = ps.get(i); 38 ps.set(i, ps.get(j)); 39 ps.set(j, phone); 40 } else if(ps.get(i).getmSalesVolume() == ps.get(j).getmSalesVolume()){ 41 // 其它判断 42 if (ps.get(i).getmAverageScore() < ps.get(j).getmAverageScore()) { 43 // 交换 44 Phone phone = new Phone(); 45 phone = ps.get(i); 46 ps.set(i, ps.get(j)); 47 ps.set(j, phone); 48 } else if (ps.get(i).getmAverageScore() == ps.get(j).getmAverageScore()) { 49 // 其它判断 50 if (ps.get(i).getmPrice() > ps.get(j).getmPrice()) { 51 // 交换 52 Phone phone = new Phone(); 53 phone = ps.get(i); 54 ps.set(i, ps.get(j)); 55 ps.set(j, phone); 56 } else { 57 // do nothing 58 } 59 } else { 60 // do nothing 61 } 62 } else { 63 // do nothing 64 } 65 } 66 } 67 68 return ps; 69 } 70 71 public static class Phone { 72 int mPhoneId; 73 int mPrice; 74 int mSalesVolume; 75 int mAverageScore; 76 public int getmPhoneId() { 77 return mPhoneId; 78 } 79 public void setmPhoneId(int mPhoneId) { 80 this.mPhoneId = mPhoneId; 81 } 82 public int getmPrice() { 83 return mPrice; 84 } 85 public void setmPrice(int mPrice) { 86 this.mPrice = mPrice; 87 } 88 public int getmSalesVolume() { 89 return mSalesVolume; 90 } 91 public void setmSalesVolume(int mSalesVolume) { 92 this.mSalesVolume = mSalesVolume; 93 } 94 public int getmAverageScore() { 95 return mAverageScore; 96 } 97 public void setmAverageScore(int mAverageScore) { 98 this.mAverageScore = mAverageScore; 99 }100 }101 }
-----------------------------------------------------------数组的方法--------------------------------------------------------------------
1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 Scanner in = new Scanner(System.in); 7 int n = in.nextInt(); 8 for (int i = 0; i < n; i++) { 9 int price = in.nextInt();10 int count = in.nextInt();11 int[][] phones = new int[count][4];12 for (int j = 0; j < count; j++) {13 for (int k = 0; k < phones[j].length; k++) {14 phones[j][k] = in.nextInt();15 }16 }17 phones = getPhones(phones, count);18 for (int j = 0; j < count; j++) {19 // System.out.println(phones[j][0] + ", " + phones[j][1] + ", " + phones[j][2] + ", " + phones[j][3]);20 if (phones[j][1] <= price) {21 System.out.println(phones[j][0]);22 }23 }24 }25 }26 27 private static int[][] getPhones(int[][] ps, int count) {28 for (int i = 0; i < count; i++) {29 for (int j = i + 1; j < count; j++) {30 if (ps[i][2] < ps[j][2]) {31 // 交换32 for (int k = 0; k < ps[i].length; k++) {33 int temp = ps[i][k];34 ps[i][k] = ps[j][k];35 ps[j][k] = temp;36 37 }38 } else if(ps[i][2] == ps[j][2]){39 // 其它判断40 if (ps[i][3] < ps[j][3]) {41 // 交换42 for (int k = 0; k < ps[i].length; k++) {43 int temp = ps[i][k];44 ps[i][k] = ps[j][k];45 ps[j][k] = temp;46 47 }48 } else if (ps[i][3] == ps[j][3]) {49 // 其它判断50 if (ps[i][1] > ps[j][1]) {51 // 交换52 for (int k = 0; k < ps[i].length; k++) {53 int temp = ps[i][k];54 ps[i][k] = ps[j][k];55 ps[j][k] = temp;56 57 }58 } else {59 // do nothing60 }61 } else {62 // do nothing63 }64 } else {65 // do nothing66 }67 }68 }69 70 return ps;71 }72 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。