⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch11.htm

📁 JAVA Developing Professional JavaApplets
💻 HTM
📖 第 1 页 / 共 5 页
字号:
&nbsp;&nbsp;private static synchronized void initializeTable(introws,String results[][]) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i,j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StateEntry newState;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Create the state array...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;states = new StateEntry[rows/2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Go through each row<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i = j = 0; i &lt; rows;i+=2,++j) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newState= createStateEntry(i,results);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Now addto state array...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;states[j]= newState;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} // end for<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Update just parts of the table...<BR>&nbsp;&nbsp;private void partialUpdate(int rows,String results[][]){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i,j;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StateEntry newState;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Kick out if rows is nota multiple of 2<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((rows % 2) != 0) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;Datanot formatted right. Rejected.&quot;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Go through each row<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i = j = 0; i &lt; rows;i+=2,++j) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Createnew state table...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newState= createStateEntry(i,results);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Now updatestate array...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stateUpdate(newState);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} // end for<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Take index into results table and get a StateEntry<BR>&nbsp;&nbsp;// object from it...<BR>private static StateEntry createStateEntry(int index,String results[][]){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Candidate newChallenger;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Candidate newIncumbent;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String stateName;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double precincts = 0.0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int electoral = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int candElectoral = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int IncumbentVotes = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int ChallengerVotes = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i = index;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String s;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Firstrow is Challenger. Get his and state info...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s = results[i][1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stateName= s.trim();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Get precinct,electoral,votes...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s= results[i][2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChallengerVotes= Integer.valueOf(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.trim()).intValue();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s= results[i][3];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;precincts= Double.valueOf(s.trim()).doubleValue();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s= results[i][4];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;electoral= Math.abs(Integer.valueOf(s.trim()).intValue());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candElectoral= Integer.valueOf(s.trim()).intValue();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(candElectoral &lt; 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candElectoral= 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (NumberFormatExceptione) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;Formaterror: &quot; + e.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s = results[i][0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newChallenger= new Candidate(s.trim(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candElectoral,ChallengerVotes);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Now getIncumbent info...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;++i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s= results[i][2];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IncumbentVotes= Integer.valueOf(s.trim()).intValue();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s= results[i][4];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candElectoral= Integer.valueOf(s.trim()).intValue();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(candElectoral &lt; 0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candElectoral= 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (NumberFormatExceptione) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&quot;Formaterror: &quot; + e.getMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s = results[i][0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newIncumbent= new Candidate(s.trim(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;candElectoral,IncumbentVotes);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Returnstate entry field...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return newStateEntry(stateName,precincts,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;electoral,(IncumbentVotes+ ChallengerVotes),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newIncumbent,newChallenger);<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Get table of state listings.&nbsp;&nbsp;This isa copy of the<BR>&nbsp;&nbsp;// state entry TABLE, but not the individual listings.&nbsp;&nbsp;This<BR>&nbsp;&nbsp;// solves synchronization problems.&nbsp;&nbsp;Theuser of the table<BR>&nbsp;&nbsp;// will get the references to the states but doesnot actually<BR>&nbsp;&nbsp;// have references to the actual keys used by theElectionTable<BR>&nbsp;&nbsp;// class.<BR>&nbsp;&nbsp;public synchronized StateEntry[] getStates() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (states == null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnstates;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StateEntry tempStates[] =new StateEntry[states.length];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; states.length;++i)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tempStates[i]= states[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return tempStates;<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Get candidate total information...<BR>&nbsp;&nbsp;public synchronized Candidate getIncumbent() {<BR>&nbsp;&nbsp;&nbsp;return Incumbent;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;public synchronized Candidate getChallenger() {<BR>&nbsp;&nbsp;&nbsp;return Challenger;<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Update the totals for each Candidate...<BR>&nbsp;&nbsp;public synchronized void updateTotals() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int ChallengerPopular = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int ChallengerElectoral =0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int IncumbentPopular = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int IncumbentElectoral = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalPopular = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Calculate the totals...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; states.length;++i) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChallengerPopular+= states[i].getChallenger().getPopular();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChallengerElectoral+= states[i].getChallenger().getElectoral();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IncumbentPopular+= states[i].getIncumbent().getPopular();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IncumbentElectoral+= states[i].getIncumbent().getElectoral();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalPopular+= states[i].getTotalVotes();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} // end for<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Update the Candidates...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Incumbent = new Candidate(&quot;Incumbent&quot;,IncumbentElectoral,IncumbentPopular);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Challenger = new Candidate(&quot;Challenger&quot;,ChallengerElectoral,</TT><FONT FACE="ZapfDingbats">&Acirc;</FONT><TT>ChallengerPopular);<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Take a state field and find spot in state<BR>&nbsp;&nbsp;// table to update...<BR>&nbsp;&nbsp;public synchronized void stateUpdate(StateEntry newState){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String name = newState.getName();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; states.length;++i) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Replacestate that matches current entry...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (name.equals(states[i].getName())){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;states[i]= newState;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} // end for<BR>System.out.println(&quot;STATE UPDATE ERROR!&quot;);<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Get total popular vote...<BR>&nbsp;&nbsp;public synchronized int getTotalPopular() {<BR>&nbsp;&nbsp;&nbsp;return totalPopular;<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// Get info for a specific state...<BR>&nbsp;&nbsp;private synchronized StateEntry getState(String name){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (int i = 0; i &lt; states.length;++i) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Replacestate that matches current entry...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (name.equals(states[i].getName())){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnstates[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} // end for<BR>System.out.println(&quot;STATE GET ERROR!&quot;);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return null;<BR>&nbsp;&nbsp;}<BR>}</TT></BLOCKQUOTE><HR><H4>The Candidate Class</H4><P>Listing 11.4 displays the Candidate class, which contains thename and vote totals of a specific candidate. Although it's asimple accessor class, it effectively functions as a row in avirtual table of candidates.<HR><BLOCKQUOTE><B>Listing 11.4. The Candidate class.<BR></B></BLOCKQUOTE><BLOCKQUOTE><TT>// This is a simple accessor class tokeep information<BR>// about candidates...<BR>public class Candidate {<BR>&nbsp;&nbsp;&nbsp;String Name;&nbsp;&nbsp;// Name of candidate<BR>&nbsp;&nbsp;&nbsp;int to

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -