综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)
生活随笔
收集整理的這篇文章主要介紹了
综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫一個投票程序,具體如下:
1)功能描述
a.有一個班級采用民主投票的方法推選班長,班長候選人共4位,每個人姓名、編號,分別為“張三 1;李四 2;王五 3;趙六 4”。
b.投票者通過在后臺輸入候選人編號(1,2,3,4)來實現投票,輸入0則表示投票結束。投票結束后,將所有候選人的得票情況顯示出來,并顯示當選者的信息
2)具體要求
a.要求使用面向對象的方法,編寫學生類Student,將候選人的信息(包括票數)作為屬性寫入類中
b.每次輸入時,判斷選票是否有效,除0~4之外的任何數字或文字都,提示“選票無效,請輸入正確的候選人編號!”,并繼續(xù)等待輸入
c.輸入結束后顯示所有候選人得票情況
d.要求解決有多人獲得最高票數的問題
比如:張三 3票;李四 3票;王五 1票;趙六 2票;
此時,張三和李四票數相同且最高
顯示格式:
代碼:
Student類
package 第十二章IO流;public class Student {private String name;private int id;private int vowNum;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public int getVowNum() {return vowNum;}public void setVowNum(int vowNum) {this.vowNum = vowNum;}@Overridepublic String toString() {return "Student [name=" + name + ", id=" + id + ", vowNum=" + vowNum + "]";}public Student(String name, int id, int vowNum) {super();this.name = name;this.id = id;this.vowNum = vowNum;}public Student() {super();}}測試類:
package 第十二章IO流;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Test {public static void main(String[] args) {Student[] students=new Student[4];students[0]=new Student("張三", 1, 0);students[1]=new Student("李四", 2, 0);students[2]=new Student("王五", 3, 0);students[3]=new Student("趙六", 4, 0);do{chooseMonitor(students);}while(isVowsEquals(students)[0].equals("true"));int max=Integer.parseInt(isVowsEquals(students)[1]);for (Student student : students) {if(max==student.getVowNum()){System.out.println("投票最終結果:"+student.getName()+"同學,最終以"+max+"票當選班長");break;}}}//投票方法public static void chooseMonitor(Student[] students){BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));while(true){try {//輸入候選人編號投票System.out.println("請輸入班長候選人編號(數字0結束):");String string=reader.readLine();//匹配只能輸入0~4boolean flag=string.matches("[0-4]");//如果輸入數據符合規(guī)則,則進行票數計數if(flag){//如果輸入的為0,結束投票if(string.equals("0")){System.out.println("投票結束!投票結果如下:");for (Student student : students) {System.out.println(student.getId()+":"+student.getName()+" 【"+student.getVowNum()+"票】");}break;}//統(tǒng)計候選人得票數for(int i=0;i<students.length;i++){//與對應的id進行匹配if(string.equals(students[i].getId()+"")){students[i].setVowNum(students[i].getVowNum()+1);}}}else{//如果輸入數據不符合規(guī)則,則提示重新輸入System.out.println("選票無效,請輸入正確的候選人編號!");}} catch (IOException e) {e.printStackTrace();}}}//解決獲得最高票數有多個人的問題public static String[] isVowsEquals(Student[] students){//將得票數存儲在一個數組當中int[] nums=new int[students.length];for(int i=0;i<students.length;i++){nums[i]=students[i].getVowNum();}//求最高票數int max=nums[0];for(int i=1;i<nums.length;i++){max=max>nums[i]?max:nums[i];}//解決多個人票數最高的問題int count=0;//獲得最高票數的人數,若只有一個,則直接產生班長,若是2個及以上,需要重新投票for(int i=0;i<nums.length;i++){if(nums[i]==max){count++;}}String[] strings=new String[2];strings[1]=""+max;//count>1說明:有多個人票數相同且為最高if(count>1){//出現多個人票數相同且為最高票數時,需要重新投票//此時需要將所有票數清零,否則會將上次投票的數量累加在一起for(Student student:students){student.setVowNum(0);}System.out.println("【有多個人獲得最高票數!】需要重新投票");System.out.println();strings[0]="true";return strings;}strings[0]="false";return strings;} }運行結果:
總結
以上是生活随笔為你收集整理的综合应用题:投票程序(知识点:对象,数组,循环,流,工具类的应用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java IO流--练习2
- 下一篇: Java之进程与线程