﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-程序人生-文章分类-j2se</title><link>http://www.blogjava.net/caihualin/category/27656.html</link><description>我们站在同一起跑线上,让我们共同努力,共同奋进,愿您的人生因程序而美好!</description><language>zh-cn</language><lastBuildDate>Sun, 06 Apr 2008 16:15:23 GMT</lastBuildDate><pubDate>Sun, 06 Apr 2008 16:15:23 GMT</pubDate><ttl>60</ttl><item><title>快速排序</title><link>http://www.blogjava.net/caihualin/articles/191120.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Sun, 06 Apr 2008 14:06:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/191120.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/191120.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/191120.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/191120.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/191120.html</trackback:ping><description><![CDATA[<p>package com.eruite.test;</p>
<p>public class QuickSort {<br />
&nbsp;/**<br />
&nbsp; * 快速排序<br />
&nbsp; * <br />
&nbsp; * @param arr<br />
&nbsp; * @param left<br />
&nbsp; * @param right<br />
&nbsp; */<br />
&nbsp;public void quickSort(int[] arr, int left, int right) {<br />
&nbsp;&nbsp;int middle, temp;<br />
&nbsp;&nbsp;int i, j;<br />
&nbsp;&nbsp;i = left;<br />
&nbsp;&nbsp;j = right;<br />
&nbsp;&nbsp;middle = arr[(i + j) / 2];<br />
&nbsp;&nbsp;do {<br />
&nbsp;&nbsp;&nbsp;// 找出左边比中间值大的数<br />
&nbsp;&nbsp;&nbsp;while (arr[i] &lt; middle &amp;&amp; i &lt; right)<br />
&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />
&nbsp;&nbsp;&nbsp;// 找出右边比中间值小的数<br />
&nbsp;&nbsp;&nbsp;while (arr[j] &gt; middle &amp;&amp; j &gt; left)<br />
&nbsp;&nbsp;&nbsp;&nbsp;j--;<br />
&nbsp;&nbsp;&nbsp;// 将左边大的数和右边小的数进行替换<br />
&nbsp;&nbsp;&nbsp;if (i &lt;= j) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;temp = arr[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;arr[i] = arr[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;arr[j] = temp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;i++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;j--;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;} while (i &lt;= j); // 当两者交错时停止</p>
<p>&nbsp;&nbsp;if (i &lt; right) {<br />
&nbsp;&nbsp;&nbsp;quickSort(arr, i, right);// 从右边进行递归<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;if (j &gt; left) {<br />
&nbsp;&nbsp;&nbsp;quickSort(arr, left, j);// 从左边进行递归<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>&nbsp;/**<br />
&nbsp; * @param args<br />
&nbsp; */<br />
&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;int[] arr = { 11, 66, 22, 0, 55, 22, 0, 32 };<br />
&nbsp;&nbsp;QuickSort sort = new QuickSort();<br />
&nbsp;&nbsp;sort.quickSort(arr, 0, arr.length - 1);<br />
&nbsp;&nbsp;for (int i = 0; i &lt; arr.length; i++) {<br />
&nbsp;&nbsp;&nbsp;System.out.print(arr[i] + " ");<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
}<br />
</p>
<img src ="http://www.blogjava.net/caihualin/aggbug/191120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2008-04-06 22:06 <a href="http://www.blogjava.net/caihualin/articles/191120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>金额转换</title><link>http://www.blogjava.net/caihualin/articles/189326.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Fri, 28 Mar 2008 10:08:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/189326.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/189326.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/189326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/189326.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/189326.html</trackback:ping><description><![CDATA[<p>package com.eruite.test;</p>
<p>import java.text.NumberFormat;<br />
import java.util.HashMap;</p>
<p>public class SimpleMoneyFormat {<br />
&nbsp;public static final String EMPTY = "";</p>
<p>&nbsp;public static final String ZERO = "零";</p>
<p>&nbsp;public static final String ONE = "壹";</p>
<p>&nbsp;public static final String TWO = "贰";</p>
<p>&nbsp;public static final String THREE = "叁";</p>
<p>&nbsp;public static final String FOUR = "肆";</p>
<p>&nbsp;public static final String FIVE = "伍";</p>
<p>&nbsp;public static final String SIX = "陆";</p>
<p>&nbsp;public static final String SEVEN = "柒";</p>
<p>&nbsp;public static final String EIGHT = "捌";</p>
<p>&nbsp;public static final String NINE = "玖";</p>
<p>&nbsp;public static final String TEN = "拾";</p>
<p>&nbsp;public static final String HUNDRED = "佰";</p>
<p>&nbsp;public static final String THOUSAND = "仟";</p>
<p>&nbsp;public static final String TEN_THOUSAND = "万";</p>
<p>&nbsp;public static final String HUNDRED_MILLION = "亿";</p>
<p>&nbsp;public static final String YUAN = "元";</p>
<p>&nbsp;public static final String JIAO = "角";</p>
<p>&nbsp;public static final String FEN = "分";</p>
<p>&nbsp;public static final String DOT = ".";</p>
<p>&nbsp;private static SimpleMoneyFormat formatter = null;</p>
<p>&nbsp;private HashMap chineseNumberMap = new HashMap();</p>
<p>&nbsp;private HashMap chineseMoneyPattern = new HashMap();</p>
<p>&nbsp;private NumberFormat numberFormat = NumberFormat.getInstance();</p>
<p>&nbsp;private SimpleMoneyFormat() {<br />
&nbsp;&nbsp;numberFormat.setMaximumFractionDigits(4);<br />
&nbsp;&nbsp;numberFormat.setMinimumFractionDigits(2);<br />
&nbsp;&nbsp;numberFormat.setGroupingUsed(false);<br />
&nbsp;&nbsp;chineseNumberMap.put("0", ZERO);<br />
&nbsp;&nbsp;chineseNumberMap.put("1", ONE);<br />
&nbsp;&nbsp;chineseNumberMap.put("2", TWO);<br />
&nbsp;&nbsp;chineseNumberMap.put("3", THREE);<br />
&nbsp;&nbsp;chineseNumberMap.put("4", FOUR);<br />
&nbsp;&nbsp;chineseNumberMap.put("5", FIVE);<br />
&nbsp;&nbsp;chineseNumberMap.put("6", SIX);<br />
&nbsp;&nbsp;chineseNumberMap.put("7", SEVEN);<br />
&nbsp;&nbsp;chineseNumberMap.put("8", EIGHT);<br />
&nbsp;&nbsp;chineseNumberMap.put("9", NINE);<br />
&nbsp;&nbsp;chineseNumberMap.put(DOT, DOT);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("1", TEN);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("2", HUNDRED);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("3", THOUSAND);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("4", TEN_THOUSAND);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("5", TEN);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("6", HUNDRED);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("7", THOUSAND);<br />
&nbsp;&nbsp;chineseMoneyPattern.put("8", HUNDRED_MILLION);<br />
&nbsp;}</p>
<p>&nbsp;public static SimpleMoneyFormat getInstance() {<br />
&nbsp;&nbsp;if (formatter == null)<br />
&nbsp;&nbsp;&nbsp;formatter = new SimpleMoneyFormat();<br />
&nbsp;&nbsp;return formatter;<br />
&nbsp;}</p>
<p>&nbsp;public String format(String moneyStr) {<br />
&nbsp;&nbsp;checkPrecision(moneyStr);<br />
&nbsp;&nbsp;String result = null;<br />
&nbsp;&nbsp;result = convertToChineseNumber(moneyStr);<br />
&nbsp;&nbsp;result = addUnitsToChineseMoneyString(result);<br />
&nbsp;&nbsp;return result;<br />
&nbsp;}</p>
<p>&nbsp;public String format(double moneyDouble) {<br />
&nbsp;&nbsp;return format(numberFormat.format(moneyDouble));<br />
&nbsp;}</p>
<p>&nbsp;public String format(int moneyInt) {<br />
&nbsp;&nbsp;return format(numberFormat.format(moneyInt));<br />
&nbsp;}</p>
<p>&nbsp;public String format(long moneyLong) {<br />
&nbsp;&nbsp;return format(numberFormat.format(moneyLong));<br />
&nbsp;}</p>
<p>&nbsp;public String format(Number moneyNum) {<br />
&nbsp;&nbsp;return format(numberFormat.format(moneyNum));<br />
&nbsp;}</p>
<p>&nbsp;private void checkPrecision(String moneyStr) {<br />
&nbsp;&nbsp;int fractionDigits = moneyStr.length() - moneyStr.indexOf(DOT) - 1;<br />
&nbsp;&nbsp;if (fractionDigits &gt; 2)<br />
&nbsp;&nbsp;&nbsp;throw new RuntimeException("金额" + moneyStr + "的小数位多于两位。"); // 精度不能比分低<br />
&nbsp;}</p>
<p>&nbsp;private String convertToChineseNumber(String moneyStr) {<br />
&nbsp;&nbsp;String result;<br />
&nbsp;&nbsp;StringBuffer cMoneyStringBuffer = new StringBuffer();<br />
&nbsp;&nbsp;for (int i = 0; i &lt; moneyStr.length(); i++) {<br />
&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i, i + 1)));<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;// 拾佰仟万亿等都是汉字里面才有的单位，加上它们<br />
&nbsp;&nbsp;int indexOfDot = cMoneyStringBuffer.indexOf(DOT);<br />
&nbsp;&nbsp;int moneyPatternCursor = 1;<br />
&nbsp;&nbsp;for (int i = indexOfDot - 1; i &gt; 0; i--) {<br />
&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ moneyPatternCursor));<br />
&nbsp;&nbsp;&nbsp;moneyPatternCursor = moneyPatternCursor == 8 ? 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: moneyPatternCursor + 1;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;String fractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer<br />
&nbsp;&nbsp;&nbsp;&nbsp;.indexOf("."));<br />
&nbsp;&nbsp;cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."),<br />
&nbsp;&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.length());</p>
<p>&nbsp;&nbsp;replace(cMoneyStringBuffer, "零拾", ZERO);<br />
&nbsp;&nbsp;replace(cMoneyStringBuffer, "零佰", ZERO);<br />
&nbsp;&nbsp;replace(cMoneyStringBuffer, "零仟", ZERO);<br />
&nbsp;&nbsp;replace(cMoneyStringBuffer, "零万", TEN_THOUSAND);<br />
&nbsp;&nbsp;replace(cMoneyStringBuffer, "零亿", HUNDRED_MILLION);<br />
&nbsp;&nbsp;replace(cMoneyStringBuffer, "零零", ZERO);</p>
<p>&nbsp;&nbsp;if (cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1)<br />
&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.delete(cMoneyStringBuffer.length() - 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.length());<br />
&nbsp;&nbsp;cMoneyStringBuffer.append(fractionPart);<br />
&nbsp;&nbsp;result = cMoneyStringBuffer.toString();<br />
&nbsp;&nbsp;return result;<br />
&nbsp;}</p>
<p>&nbsp;private String addUnitsToChineseMoneyString(String moneyStr) {<br />
&nbsp;&nbsp;String result;<br />
&nbsp;&nbsp;StringBuffer cMoneyStringBuffer = new StringBuffer(moneyStr);<br />
&nbsp;&nbsp;int indexOfDot = cMoneyStringBuffer.indexOf(DOT);<br />
&nbsp;&nbsp;cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1, YUAN);<br />
&nbsp;&nbsp;cMoneyStringBuffer.insert(cMoneyStringBuffer.length() - 1, JIAO);<br />
&nbsp;&nbsp;cMoneyStringBuffer.insert(cMoneyStringBuffer.length(), FEN);<br />
&nbsp;&nbsp;if (cMoneyStringBuffer.indexOf("零角零分") != -1)// 没有零头，加整<br />
&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零角零分"),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.length(), "整");<br />
&nbsp;&nbsp;else if (cMoneyStringBuffer.indexOf("零分") != -1)// 没有零分，加整<br />
&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零分"),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.length(), "整");<br />
&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;if (cMoneyStringBuffer.indexOf("零角") != -1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("零角"),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cMoneyStringBuffer.indexOf("零角") + 2);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;result = cMoneyStringBuffer.toString();<br />
&nbsp;&nbsp;return result;<br />
&nbsp;}</p>
<p>&nbsp;private void replace(StringBuffer pValue, String pSource, String pDest) {<br />
&nbsp;&nbsp;if (pValue == null || pSource == null || pDest == null)<br />
&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;/** 记录pSource在pValue中的位置 */<br />
&nbsp;&nbsp;int intPos = 0;<br />
&nbsp;&nbsp;do {<br />
&nbsp;&nbsp;&nbsp;intPos = pValue.toString().indexOf(pSource);<br />
&nbsp;&nbsp;&nbsp;/** 没有找到pSource */<br />
&nbsp;&nbsp;&nbsp;if (intPos == -1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;pValue.delete(intPos, intPos + pSource.length());<br />
&nbsp;&nbsp;&nbsp;pValue.insert(intPos, pDest);<br />
&nbsp;&nbsp;} while (true);<br />
&nbsp;}</p>
<p>&nbsp;public static void main(String args[]) {<br />
&nbsp;&nbsp;System.out.println(getInstance().format(new Double(100110010001.01)));<br />
&nbsp;}<br />
}<br />
</p>
<img src ="http://www.blogjava.net/caihualin/aggbug/189326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2008-03-28 18:08 <a href="http://www.blogjava.net/caihualin/articles/189326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>洗牌功能</title><link>http://www.blogjava.net/caihualin/articles/189325.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Fri, 28 Mar 2008 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/189325.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/189325.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/189325.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/189325.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/189325.html</trackback:ping><description><![CDATA[<p>package com.eruite.test;</p>
<p>import java.util.Random;</p>
<p>public class Poker {<br />
&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;int[] pokers = new int[54];<br />
&nbsp;&nbsp;for (int i = 0; i &lt; pokers.length; i++)<br />
&nbsp;&nbsp;&nbsp;pokers[i] = i;<br />
&nbsp;&nbsp;int j = 0, temp = 0;<br />
&nbsp;&nbsp;for (int i = 0; i &lt; pokers.length; i++) {<br />
&nbsp;&nbsp;&nbsp;Random r = new Random();<br />
&nbsp;&nbsp;&nbsp;j = r.nextInt(54);<br />
&nbsp;&nbsp;&nbsp;temp = pokers[i];<br />
&nbsp;&nbsp;&nbsp;pokers[i] = pokers[j];<br />
&nbsp;&nbsp;&nbsp;pokers[j] = temp;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;for (int i = 0; i &lt; pokers.length; i++) {<br />
&nbsp;&nbsp;&nbsp;System.out.print(pokers[i] + " ");<br />
&nbsp;&nbsp;&nbsp;if ((i + 1) % 10 == 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
}<br />
</p>
<img src ="http://www.blogjava.net/caihualin/aggbug/189325.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2008-03-28 18:01 <a href="http://www.blogjava.net/caihualin/articles/189325.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>合并法排序</title><link>http://www.blogjava.net/caihualin/articles/189321.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Fri, 28 Mar 2008 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/189321.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/189321.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/189321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/189321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/189321.html</trackback:ping><description><![CDATA[  <img src ="http://www.blogjava.net/caihualin/aggbug/189321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2008-03-28 17:57 <a href="http://www.blogjava.net/caihualin/articles/189321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二叉查找树</title><link>http://www.blogjava.net/caihualin/articles/189319.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Fri, 28 Mar 2008 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/189319.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/189319.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/189319.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/189319.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/189319.html</trackback:ping><description><![CDATA[<p>package com.eruite.test;</p>
<p>class BinaryNode {<br />
&nbsp;Comparable element;</p>
<p>&nbsp;BinaryNode left;</p>
<p>&nbsp;BinaryNode right;</p>
<p>&nbsp;BinaryNode(Comparable element) {<br />
&nbsp;&nbsp;this(element, null, null);<br />
&nbsp;}</p>
<p>&nbsp;BinaryNode(Comparable element, BinaryNode left, BinaryNode right) {<br />
&nbsp;&nbsp;this.element = element;<br />
&nbsp;&nbsp;this.left = left;<br />
&nbsp;&nbsp;this.right = right;<br />
&nbsp;}<br />
}</p>
<p>public class BinarySearchTree {<br />
&nbsp;private BinaryNode root;</p>
<p>&nbsp;public BinarySearchTree() {<br />
&nbsp;&nbsp;root = null;<br />
&nbsp;}</p>
<p>&nbsp;public void makeEmpty() {<br />
&nbsp;&nbsp;root = null;<br />
&nbsp;}</p>
<p>&nbsp;public boolean isEmpty() {<br />
&nbsp;&nbsp;return root == null;<br />
&nbsp;}</p>
<p>&nbsp;public Comparable find(Comparable x) {<br />
&nbsp;&nbsp;return elementAt(find(x, root));<br />
&nbsp;}</p>
<p>&nbsp;public Comparable findMin() {<br />
&nbsp;&nbsp;return elementAt(findMin(root));<br />
&nbsp;}</p>
<p>&nbsp;public Comparable findMax() {<br />
&nbsp;&nbsp;return elementAt(findMax(root));<br />
&nbsp;}</p>
<p>&nbsp;public void insert(Comparable x) {<br />
&nbsp;&nbsp;root = insert(x, root);<br />
&nbsp;}</p>
<p>&nbsp;public void remove(Comparable x) {<br />
&nbsp;&nbsp;root = remove(x, root);<br />
&nbsp;}</p>
<p>&nbsp;public void printTree() {<br />
&nbsp;&nbsp;if (isEmpty())<br />
&nbsp;&nbsp;&nbsp;System.out.println("Empty Tree");<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;printTree(root);<br />
&nbsp;}</p>
<p>&nbsp;private Comparable elementAt(BinaryNode t) {<br />
&nbsp;&nbsp;return t == null ? null : t.element;<br />
&nbsp;}</p>
<p>&nbsp;private BinaryNode find(Comparable x, BinaryNode t) {<br />
&nbsp;&nbsp;if (t == null)<br />
&nbsp;&nbsp;&nbsp;return null;<br />
&nbsp;&nbsp;if (x.compareTo(t.element) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;return find(x, t.left);<br />
&nbsp;&nbsp;else if (x.compareTo(t.element) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;return find(x, t.right);<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;return t;<br />
&nbsp;}</p>
<p>&nbsp;private BinaryNode findMin(BinaryNode t) {<br />
&nbsp;&nbsp;if (t == null)<br />
&nbsp;&nbsp;&nbsp;return null;<br />
&nbsp;&nbsp;else if (t.left == null)<br />
&nbsp;&nbsp;&nbsp;return t;<br />
&nbsp;&nbsp;return findMin(t.left);<br />
&nbsp;}</p>
<p>&nbsp;private BinaryNode findMax(BinaryNode t) {<br />
&nbsp;&nbsp;if (t != null) {<br />
&nbsp;&nbsp;&nbsp;while (t.right != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;t = t.right;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return t;<br />
&nbsp;}</p>
<p>&nbsp;private BinaryNode insert(Comparable x, BinaryNode t) {<br />
&nbsp;&nbsp;if (t == null)<br />
&nbsp;&nbsp;&nbsp;t = new BinaryNode(x);<br />
&nbsp;&nbsp;else if (x.compareTo(t.element) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;t.left = insert(x, t.left);<br />
&nbsp;&nbsp;else if (x.compareTo(t.element) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;t.right = insert(x, t.right);<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;;<br />
&nbsp;&nbsp;return t;<br />
&nbsp;}</p>
<p>&nbsp;private BinaryNode remove(Comparable x, BinaryNode t) {<br />
&nbsp;&nbsp;if (t == null)<br />
&nbsp;&nbsp;&nbsp;return t;<br />
&nbsp;&nbsp;if (x.compareTo(t.element) &lt; 0)<br />
&nbsp;&nbsp;&nbsp;t.left = remove(x, t.left);<br />
&nbsp;&nbsp;else if (x.compareTo(t.element) &gt; 0)<br />
&nbsp;&nbsp;&nbsp;t.right = remove(x, t.right);<br />
&nbsp;&nbsp;else if (t.left != null &amp;&amp; t.right != null) {<br />
&nbsp;&nbsp;&nbsp;t.element = findMin(t.right).element;<br />
&nbsp;&nbsp;&nbsp;t.right = remove(x, t.right);<br />
&nbsp;&nbsp;} else<br />
&nbsp;&nbsp;&nbsp;t = (t.left != null) ? t.left : t.right;<br />
&nbsp;&nbsp;return t;<br />
&nbsp;}</p>
<p>&nbsp;private void printTree(BinaryNode t) {<br />
&nbsp;&nbsp;if (t != null) {<br />
&nbsp;&nbsp;&nbsp;printTree(t.left);<br />
&nbsp;&nbsp;&nbsp;System.out.print(t.element);<br />
&nbsp;&nbsp;&nbsp;printTree(t.right);<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;BinarySearchTree bst = new BinarySearchTree();<br />
&nbsp;&nbsp;bst.insert(new Integer(1));<br />
&nbsp;&nbsp;bst.insert(new Integer(2));<br />
&nbsp;&nbsp;bst.insert(new Integer(3));<br />
&nbsp;&nbsp;bst.insert(new Integer(4));<br />
&nbsp;&nbsp;bst.insert(new Integer(5));<br />
&nbsp;&nbsp;bst.insert(new Integer(6));<br />
&nbsp;&nbsp;Comparable c = bst.find(new Integer(6));<br />
&nbsp;&nbsp;if (c != null)<br />
&nbsp;&nbsp;&nbsp;System.out.print(c);<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;System.out.println("not exist");<br />
&nbsp;}<br />
}<br />
</p>
 <img src ="http://www.blogjava.net/caihualin/aggbug/189319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2008-03-28 17:55 <a href="http://www.blogjava.net/caihualin/articles/189319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>反转字符串中的单词</title><link>http://www.blogjava.net/caihualin/articles/189314.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Fri, 28 Mar 2008 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/189314.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/189314.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/189314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/189314.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/189314.html</trackback:ping><description><![CDATA[<p>package com.eruite.test;</p>
<p>import java.util.StringTokenizer;</p>
<p>public class ReverseWords {<br />
&nbsp;public static String reverseWords(String str) {<br />
&nbsp;&nbsp;if (str == null || str.trim().equals(""))<br />
&nbsp;&nbsp;&nbsp;return null;<br />
&nbsp;&nbsp;StringTokenizer spaceToker = new StringTokenizer(str);<br />
&nbsp;&nbsp;String[] result = new String[spaceToker.countTokens()];<br />
&nbsp;&nbsp;int index = 0;<br />
&nbsp;&nbsp;while (spaceToker.hasMoreTokens()) {<br />
&nbsp;&nbsp;&nbsp;result[index] = spaceToker.nextToken();<br />
&nbsp;&nbsp;&nbsp;index++;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;StringBuffer sb = new StringBuffer();<br />
&nbsp;&nbsp;for (int i = result.length - 1; i &gt;= 0; i--)<br />
&nbsp;&nbsp;&nbsp;sb.append(result[i]+" ");<br />
&nbsp;&nbsp;return sb.toString();<br />
&nbsp;}</p>
<p>&nbsp;public static void main(String[] args) {<br />
&nbsp;&nbsp;String str = "Do or do not, there is no try.";<br />
&nbsp;&nbsp;System.out.print(reverseWords(str));<br />
&nbsp;}<br />
}<br />
</p>
 <img src ="http://www.blogjava.net/caihualin/aggbug/189314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2008-03-28 17:32 <a href="http://www.blogjava.net/caihualin/articles/189314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA SOCKET编程</title><link>http://www.blogjava.net/caihualin/articles/164048.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Thu, 29 Nov 2007 09:29:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/164048.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/164048.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/164048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/164048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/164048.html</trackback:ping><description><![CDATA[<p>Server端程序:</p>
<p>package test; </p>
<p>import java.net.*; <br />
import java.io.*; </p>
<p>public class Server <br />
{ <br />
&nbsp;private ServerSocket ss; <br />
&nbsp;private Socket socket; <br />
&nbsp;private BufferedReader in; <br />
&nbsp;private PrintWriter out; <br />
&nbsp;<br />
&nbsp;public Server() <br />
&nbsp;{ <br />
&nbsp;&nbsp;try <br />
&nbsp;&nbsp;{ <br />
&nbsp;&nbsp;&nbsp;ss=new ServerSocket(10000); <br />
&nbsp;&nbsp;&nbsp;while(true) <br />
&nbsp;&nbsp;&nbsp;{ <br />
&nbsp;&nbsp;&nbsp;&nbsp;socket = ss.accept(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;String RemoteIP = socket.getInetAddress().getHostAddress(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;String RemotePort = ":"+socket.getLocalPort(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("A client come in!IP:"+RemoteIP+RemotePort); <br />
&nbsp;&nbsp;&nbsp;&nbsp;in = new BufferedReader(new InputStreamReader(socket.getInputStream())); <br />
&nbsp;&nbsp;&nbsp;&nbsp;String line = in.readLine(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;/*if (line.equals("END"))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Cleint send is :" + line); <br />
&nbsp;&nbsp;&nbsp;&nbsp;out = new PrintWriter(socket.getOutputStream(),true); <br />
&nbsp;&nbsp;&nbsp;&nbsp;out.println("Your Message Received!"); <br />
&nbsp;&nbsp;&nbsp;&nbsp;out.close(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;in.close(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;socket.close(); <br />
&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;catch (IOException e) <br />
&nbsp;&nbsp;{ <br />
&nbsp;&nbsp;&nbsp;out.println("wrong"); <br />
&nbsp;&nbsp;} <br />
&nbsp;} </p>
<p>&nbsp;public static void main(String[] args) <br />
&nbsp;{ <br />
&nbsp;&nbsp;new Server(); <br />
&nbsp;} <br />
}</p>
<p>Client端程序:</p>
<p>package test; </p>
<p>import java.io.*; <br />
import java.net.*; <br />
&nbsp;<br />
public class Client <br />
{ <br />
&nbsp;private Socket socket; <br />
&nbsp;private BufferedReader in; <br />
&nbsp;private PrintWriter out; <br />
&nbsp;<br />
&nbsp;public Client() <br />
&nbsp;{ <br />
&nbsp;&nbsp;try <br />
&nbsp;&nbsp;{ <br />
&nbsp;&nbsp;&nbsp;System.out.println("Try to Connect to 127.0.0.1:10000"); <br />
&nbsp;&nbsp;&nbsp;socket = new Socket("127.0.0.1",10000); <br />
&nbsp;&nbsp;&nbsp;System.out.println("The Server Connected!"); <br />
&nbsp;&nbsp;&nbsp;System.out.println("Please enter some Character:"); <br />
&nbsp;&nbsp;&nbsp;BufferedReader line = new BufferedReader(new InputStreamReader(System.in)); <br />
&nbsp;&nbsp;&nbsp;out = new PrintWriter(socket.getOutputStream(),true);<br />
&nbsp;&nbsp;&nbsp;in = new BufferedReader(new InputStreamReader(socket.getInputStream()));&nbsp; <br />
&nbsp;&nbsp;&nbsp;System.out.println(in.readLine()); <br />
&nbsp;&nbsp;&nbsp;out.close(); <br />
&nbsp;&nbsp;&nbsp;in.close(); <br />
&nbsp;&nbsp;&nbsp;socket.close();　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　&nbsp;&nbsp;}<br />
&nbsp;&nbsp;catch(IOException e) <br />
&nbsp;&nbsp;{ <br />
&nbsp;&nbsp;&nbsp;out.println("Wrong"); <br />
&nbsp;&nbsp;} <br />
&nbsp;} </p>
<p>&nbsp;public static void main(String[] args) <br />
&nbsp;{ <br />
&nbsp;&nbsp;new Client(); <br />
&nbsp;} <br />
}</p>
 <img src ="http://www.blogjava.net/caihualin/aggbug/164048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2007-11-29 17:29 <a href="http://www.blogjava.net/caihualin/articles/164048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用java写二叉树的算法</title><link>http://www.blogjava.net/caihualin/articles/164047.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Thu, 29 Nov 2007 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/164047.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/164047.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/164047.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/164047.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/164047.html</trackback:ping><description><![CDATA[<p>class Node<br />
{<br />
&nbsp;int iData; // data used as key value<br />
&nbsp;double dData; // other data<br />
&nbsp;Node leftChild; // this Node's left child<br />
&nbsp;Node rightChild; // this Node's right child</p>
<p>&nbsp;public void displayNode()<br />
&nbsp;{<br />
&nbsp;&nbsp;// (see Listing 8.1 for method body)<br />
&nbsp;&nbsp;System.out.print("{" + iData + ", " + dData + "} ");<br />
&nbsp;}<br />
}</p>
<p>class Tree<br />
{<br />
&nbsp;private Node root; // the only data field in Tree</p>
<p>&nbsp;public Node find(int key) // find Node with given key<br />
&nbsp;{ // (assumes non-empty tree)<br />
&nbsp;&nbsp;Node current = root; // start at root<br />
&nbsp;&nbsp;while(current.iData != key) // while no match,<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(key &lt; current.iData) // go left?<br />
&nbsp;&nbsp;&nbsp;&nbsp;current = current.leftChild;<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;current = current.rightChild; // or go right?<br />
&nbsp;&nbsp;&nbsp;if(current == null) // if no child,<br />
&nbsp;&nbsp;&nbsp;&nbsp;return null; // didn't find it<br />
&nbsp;&nbsp;}&nbsp;<br />
&nbsp;&nbsp;return current; // found it<br />
&nbsp;}</p>
<p>&nbsp;public Node minimum() // returns Node with minimum key value<br />
&nbsp;{<br />
&nbsp;&nbsp;Node current, last=null;<br />
&nbsp;&nbsp;current = root; // start at root<br />
&nbsp;&nbsp;while(current != null) // until the bottom,<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;last = current; // remember Node<br />
&nbsp;&nbsp;&nbsp;current = current.leftChild; // go to left child<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return last;<br />
&nbsp;}</p>
<p>&nbsp;public void insert(int id, double dd)<br />
&nbsp;{<br />
&nbsp;&nbsp;Node newNode = new Node(); // make new Node<br />
&nbsp;&nbsp;newNode.iData = id; // insert data<br />
&nbsp;&nbsp;newNode.dData = dd;<br />
&nbsp;&nbsp;if(root==null) // no Node in root<br />
&nbsp;&nbsp;&nbsp;root = newNode;<br />
&nbsp;&nbsp;else // root occupied<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;Node current = root; // start at root<br />
&nbsp;&nbsp;&nbsp;Node parent;<br />
&nbsp;&nbsp;&nbsp;while(true) // (exits internally)<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent = current;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(id &lt; current.iData) // go left?<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current = current.leftChild;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(current == null) // if end of the line,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ // insert on left<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.leftChild = newNode;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;} // end if go left<br />
&nbsp;&nbsp;&nbsp;&nbsp;else // or go right?<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current = current.rightChild;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(current == null) // if end of the line<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ // insert on right<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.rightChild = newNode;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;} // end else go right<br />
&nbsp;&nbsp;&nbsp;} // end while<br />
&nbsp;&nbsp;} // end else not root<br />
&nbsp;} // end insert()</p>
<p>&nbsp;public boolean delete(int key) // delete Node with given key<br />
&nbsp;{ // (assumes non-empty list)<br />
&nbsp;&nbsp;Node current = root;<br />
&nbsp;&nbsp;Node parent = root;<br />
&nbsp;&nbsp;boolean isLeftChild = true;<br />
&nbsp;&nbsp;while(current.iData != key) // search for Node<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;parent = current;<br />
&nbsp;&nbsp;&nbsp;if(key &lt; current.iData) // go left?<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;isLeftChild = true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;current = current.leftChild;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;else // or go right?<br />
&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;isLeftChild = false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;current = current.rightChild;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;if(current == null) // end of the line,<br />
&nbsp;&nbsp;&nbsp;&nbsp;return false; // didn't find it<br />
&nbsp;&nbsp;} // end while<br />
&nbsp;&nbsp;// found Node to delete<br />
&nbsp;&nbsp;// continues...<br />
&nbsp;<br />
&nbsp;&nbsp;// delete() continued...<br />
&nbsp;&nbsp;// if no children, simply delete it<br />
&nbsp;&nbsp;if(current.leftChild==null &amp;&amp; current.rightChild==null)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;if(current == root) // if root,<br />
&nbsp;&nbsp;&nbsp;&nbsp;root = null; // tree is empty<br />
&nbsp;&nbsp;&nbsp;else if(isLeftChild)<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.leftChild = null; // disconnect<br />
&nbsp;&nbsp;&nbsp;else // from parent<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.rightChild = null;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;// continues...</p>
<p>&nbsp;&nbsp;// delete() continued...<br />
&nbsp;&nbsp;// if no right child, replace with left subtree<br />
&nbsp;&nbsp;else if(current.rightChild==null)<br />
&nbsp;&nbsp;&nbsp;if(current == root)<br />
&nbsp;&nbsp;&nbsp;&nbsp;root = current.leftChild;<br />
&nbsp;&nbsp;&nbsp;else if(isLeftChild) // left child of parent<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.leftChild = current.leftChild;<br />
&nbsp;&nbsp;&nbsp;else // right child of parent<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.rightChild = current.leftChild;<br />
&nbsp;&nbsp;// if no left child, replace with right subtree<br />
&nbsp;&nbsp;else if(current.leftChild==null)<br />
&nbsp;&nbsp;&nbsp;if(current == root)<br />
&nbsp;&nbsp;&nbsp;&nbsp;root = current.rightChild;<br />
&nbsp;&nbsp;&nbsp;else if(isLeftChild) // left child of parent<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.leftChild = current.rightChild;<br />
&nbsp;&nbsp;&nbsp;else // right child of parent<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.rightChild = current.rightChild;<br />
&nbsp;&nbsp;// continued...</p>
<p>&nbsp;&nbsp;// delete() continued<br />
&nbsp;&nbsp;else // two children, so replace with inorder successor<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;// get successor of Node to delete (current)<br />
&nbsp;&nbsp;&nbsp;Node successor = getSuccessor(current);<br />
&nbsp;&nbsp;&nbsp;// connect parent of current to successor instead<br />
&nbsp;&nbsp;&nbsp;if(current == root)<br />
&nbsp;&nbsp;&nbsp;&nbsp;root = successor;<br />
&nbsp;&nbsp;&nbsp;else if(isLeftChild)<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.leftChild = successor;<br />
&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;parent.rightChild = successor;<br />
&nbsp;&nbsp;&nbsp;&nbsp;// connect successor to current's left child<br />
&nbsp;&nbsp;&nbsp;successor.leftChild = current.leftChild;<br />
&nbsp;&nbsp;} // end else two children<br />
&nbsp;&nbsp;// (successor cannot have a left child)<br />
&nbsp;&nbsp;return true;<br />
&nbsp;} // end delete()<br />
&nbsp;<br />
&nbsp;public void printTree(){<br />
&nbsp;&nbsp;System.out.print("前序遍历：");<br />
&nbsp;&nbsp;preOrder(root);<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;System.out.print("中序遍历：");<br />
&nbsp;&nbsp;inOrder(root);<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;&nbsp;System.out.print("后序遍历：");<br />
&nbsp;&nbsp;postOrder(root);<br />
&nbsp;&nbsp;System.out.println();<br />
&nbsp;}<br />
&nbsp;&nbsp;<br />
&nbsp;// returns Node with next-highest value after delNode<br />
&nbsp;// goes to right child, then right child's left descendants<br />
&nbsp;private Node getSuccessor(Node delNode)<br />
&nbsp;{<br />
&nbsp;&nbsp;Node successorParent = delNode;<br />
&nbsp;&nbsp;Node successor = delNode;<br />
&nbsp;&nbsp;Node current = delNode.rightChild; // go to right child<br />
&nbsp;&nbsp;while(current != null) // until no more<br />
&nbsp;&nbsp;{ // left children,<br />
&nbsp;&nbsp;&nbsp;successorParent = successor;<br />
&nbsp;&nbsp;&nbsp;successor = current;<br />
&nbsp;&nbsp;&nbsp;current = current.leftChild; // go to left child<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;// if successor not<br />
&nbsp;&nbsp;if(successor != delNode.rightChild) // right child,<br />
&nbsp;&nbsp;{ // make connections<br />
&nbsp;&nbsp;&nbsp;successorParent.leftChild = successor.rightChild;<br />
&nbsp;&nbsp;&nbsp;successor.rightChild = delNode.rightChild;//?<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return successor;<br />
&nbsp;}</p>
<p>&nbsp;private void preOrder(Node localRoot)<br />
&nbsp;{<br />
&nbsp;&nbsp;if(localRoot !=null)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;localRoot.displayNode();<br />
&nbsp;&nbsp;&nbsp;preOrder(localRoot.leftChild);<br />
&nbsp;&nbsp;&nbsp;preOrder(localRoot.rightChild);<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>&nbsp;private void inOrder(Node localRoot)<br />
&nbsp;{<br />
&nbsp;&nbsp;if(localRoot != null)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;inOrder(localRoot.leftChild);<br />
&nbsp;&nbsp;&nbsp;localRoot.displayNode();<br />
&nbsp;&nbsp;&nbsp;inOrder(localRoot.rightChild);<br />
&nbsp;&nbsp;}<br />
&nbsp;}</p>
<p>&nbsp;private void postOrder(Node localRoot)<br />
&nbsp;{<br />
&nbsp;&nbsp;if(localRoot !=null)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;postOrder(localRoot.leftChild);<br />
&nbsp;&nbsp;&nbsp;postOrder(localRoot.rightChild);<br />
&nbsp;&nbsp;&nbsp;localRoot.displayNode();<br />
&nbsp;&nbsp;}<br />
&nbsp;}<br />
} // end class Tree</p>
<p>&nbsp;</p>
<p>public class TreeApp<br />
{<br />
&nbsp;public static void main(String[] args)<br />
&nbsp;{<br />
&nbsp;&nbsp;Tree theTree = new Tree(); // make a tree<br />
&nbsp;&nbsp;theTree.insert(50, 1.5); // insert 3 Nodes<br />
&nbsp;&nbsp;theTree.insert(25, 1.7);<br />
&nbsp;&nbsp;theTree.insert(75, 1.9);<br />
&nbsp;&nbsp;Node found = theTree.find(25); // find Node with key 25<br />
&nbsp;&nbsp;if(found != null)<br />
&nbsp;&nbsp;&nbsp;System.out.println("Found the Node with key 25");<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;System.out.println("Could not find node with key 25");<br />
&nbsp;&nbsp;//theTree.minimum().displayNode();<br />
&nbsp;&nbsp;theTree.printTree();<br />
&nbsp;&nbsp;System.out.println("删除后...");<br />
&nbsp;&nbsp;theTree.delete(25);<br />
&nbsp;&nbsp;theTree.printTree();<br />
&nbsp;} // end main()<br />
} // end class TreeApp</p>
 <img src ="http://www.blogjava.net/caihualin/aggbug/164047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2007-11-29 17:25 <a href="http://www.blogjava.net/caihualin/articles/164047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个实现长整型数相加减的小程序</title><link>http://www.blogjava.net/caihualin/articles/164040.html</link><dc:creator>蔡华林</dc:creator><author>蔡华林</author><pubDate>Thu, 29 Nov 2007 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/caihualin/articles/164040.html</guid><wfw:comment>http://www.blogjava.net/caihualin/comments/164040.html</wfw:comment><comments>http://www.blogjava.net/caihualin/articles/164040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/caihualin/comments/commentRss/164040.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/caihualin/services/trackbacks/164040.html</trackback:ping><description><![CDATA[<p>import java.io.*;</p>
<p>public class BigInteger//定义长整型的类<br />
{<br />
&nbsp;&nbsp;&nbsp; private static final int add1Max=100;//可计算最长位数<br />
&nbsp;&nbsp;&nbsp; private static final int add2Max=100;//同上<br />
&nbsp;&nbsp;&nbsp; private char[] add1 = new char[add1Max];<br />
&nbsp;&nbsp;&nbsp; private char[] add2 = new char[add1Max];<br />
&nbsp;&nbsp;&nbsp; private int len1;<br />
&nbsp;&nbsp;&nbsp; private int len2;</p>
<p>&nbsp;&nbsp;&nbsp; public void setAdd1() throws IOException<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String sLine1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print("Please input add1 : ");//输入第一个长整数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader in = new BufferedReader(new InputStreamReader(System.in));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sLine1=in.readLine();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(;i&lt;sLine1.length();i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add1[i]=sLine1.charAt(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;add1Max;i++)//len1=add1.length()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(add1[i]!='\0')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len1++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void setAdd2() throws IOException<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String sLine2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print("Please input add2 : ");//输入第二个长整数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader in2 = new BufferedReader(new InputStreamReader(System.in));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sLine2 = in2.readLine();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;sLine2.length();i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add2[i]=sLine2.charAt(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;add2Max;i++)//len2=add2.length()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(add2[i]!='\0')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len2++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public char[] getAdd1()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return add1;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public char[] getAdd2()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return add2;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public int getLen1()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return len1;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public int getLen2()<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return len2;<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void add(char[] add1,char[] add2)//BigInteger相加方法<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int len = Math.max(len1,len2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] temp1 = new char[len];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] temp2 = new char[len];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] result = new char[len+1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len1;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp1[len-1-i]=add1[len1-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len2;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp2[len-1-i]=add2[len2-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int m=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len;i++)//相加<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(temp1[len-1-i]!=0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp1[len-1-i]-=48;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(temp2[len-1-i]!=0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp2[len-1-i]-=48;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m=temp1[len-1-i]+temp2[len-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m&gt;=10)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m-=10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[len-i]+=m;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[len-1-i]+=1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else result[len-i]+=m;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print("add1 + add2 = ");//输出相加结果<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(result[0]==0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(;i&lt;len+1;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(Integer.toString(result[i]));<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public void sub(char[]sub1,char[]sub2)//BigInteger相减方法<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int len = Math.max(len1,len2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] temp1 = new char[len];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] temp2 = new char[len];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] result = new char[len+1];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(len1&gt;len2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len1;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp1[len-1-i]=sub1[len1-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len2;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp2[len-1-i]=sub2[len2-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else//保证减数大于被减数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len1;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp2[len-1-i]=sub1[len1-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len2;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp1[len-1-i]=sub2[len2-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int m=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;len;i++)//相减<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(temp1[len-1-i]!=0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp1[len-1-i]-=48;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(temp2[len-1-i]!=0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp2[len-1-i]-=48;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m=temp1[len-1-i]-temp2[len-1-i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m&lt;0)//如果计算的那一位的减数小于被减数那么相前一位借10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m+=10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result[len-i]+=m;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp1[len-1-i]-=1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else result[len-i]+=m;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print("add1 - add2 = ");//输出减法结果<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(result[i]==0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if((len2&gt;len1)||(len1==len2&amp;&amp;sub1[0]&lt;sub2[0]))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print("-");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(;i&lt;len+1;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.print(Integer.toString(result[i]));<br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws IOException//主方法&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BigInteger big = new BigInteger();//生成一个BigInteger对象<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big.setAdd1();//得到数1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big.setAdd2();//得到数2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] num1 = big.getAdd1();//相加<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char[] num2 = big.getAdd2();//相减<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int len1 = big.getLen1();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int len2 = big.getLen2();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("The length of add1 is : " + len1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("The length of add2 is : " + len2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big.add(num1,num2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big.sub(num1,num2);<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
 <img src ="http://www.blogjava.net/caihualin/aggbug/164040.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/caihualin/" target="_blank">蔡华林</a> 2007-11-29 17:00 <a href="http://www.blogjava.net/caihualin/articles/164040.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>