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