﻿<?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>IT博客-无业бю游民-随笔分类-ACM/ICPC_java用法</title><link>http://www.cnitblog.com/weiweibbs/category/7160.html</link><description>hobo</description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 02:06:03 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 02:06:03 GMT</pubDate><ttl>60</ttl><item><title>java小数问题</title><link>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47872.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sun, 10 Aug 2008 07:57:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47872.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/47872.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/47872.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/47872.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px">
<p><font color=#ff0000><wbr><font style="LINE-HEIGHT: 1.3em"><strong>方式一：</strong></font></font><wbr><wbr><br><wbr><strong><font style="LINE-HEIGHT: 1.3em">四舍五入&nbsp;&nbsp;</font><wbr><br></strong><font style="LINE-HEIGHT: 1.3em">double&nbsp;&nbsp; f&nbsp;&nbsp; =&nbsp;&nbsp; 111231.5585;&nbsp;&nbsp;</font><wbr><br><font style="LINE-HEIGHT: 1.3em">BigDecimal&nbsp;&nbsp; b&nbsp;&nbsp; =&nbsp;&nbsp; new&nbsp;&nbsp; BigDecimal(f);&nbsp;&nbsp;</font><wbr><br><font style="LINE-HEIGHT: 1.3em">double&nbsp;&nbsp; f1&nbsp;&nbsp; =&nbsp;&nbsp; b.setScale(2,&nbsp;&nbsp; BigDecimal.ROUND_HALF_UP).doubleValue();&nbsp;&nbsp;</font><wbr><br><font style="LINE-HEIGHT: 1.3em">保留两位小数</font><wbr>&nbsp;&nbsp;<br><span style="COLOR: #000000"><font style="LINE-HEIGHT: 1.3em" color=#ff6600>---------------------------------------------------------------</font><wbr>&nbsp;&nbsp;<wbr><br></span><wbr><strong><font style="LINE-HEIGHT: 1.3em" color=#ff0000>方式二：</font><wbr><wbr><br><wbr></strong><span style="COLOR: #000000"><font style="LINE-HEIGHT: 1.3em">java.text.DecimalFormat&nbsp;&nbsp; df&nbsp;&nbsp; =new&nbsp;&nbsp; java.text.DecimalFormat("#.00");&nbsp;&nbsp;</font><wbr><br><font style="LINE-HEIGHT: 1.3em">df.format(你要格式化的数字);</font><wbr></span><wbr><br><wbr><span style="COLOR: #000000">例：new java.text.DecimalFormat("#.00").format(3.1415926)</span><wbr><wbr><br><wbr><span style="COLOR: #000000">#.00 表示两位小数 #.0000四位小数 以此类推...</span><wbr><wbr><br><wbr><strong><font style="LINE-HEIGHT: 1.3em" color=#ff0000>方式三：</font><wbr><wbr><br><wbr></strong><span style="COLOR: #000000">double d = 3.1415926;</span><wbr><wbr><br><wbr><span style="COLOR: #000000">String result = String .format("%.2f");</span><wbr><wbr><br><wbr><strong><font style="LINE-HEIGHT: 1.3em" color=#ff0000>%.2f %. 表示 小数点前任意位数&nbsp;&nbsp; 2 表示两位小数 格式后的结果为f 表示浮点型</font><wbr><wbr><img id=paperPicArea1 style="DISPLAY: none; POSITION: relative" src="http://imgcache.qq.com/ac/qzone_v4/b.gif"></strong></p>
</blockquote>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/47872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2008-08-10 15:57 <a href="http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>进制之间的转换</title><link>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47871.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sun, 10 Aug 2008 07:54:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47871.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/47871.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/47871.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/47871.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px">
<p>由于Unicode兼容ASCII（0～255），因此，上面得到的Unicode就是ASCII。 <br>至于转换成二进制或其他进制，Java</strong><wbr> API提供了方便函数，你可以查Java</strong><wbr>的API手册。 以字符a的ASCII为例：&nbsp;<br>&nbsp; int i = 'a';&nbsp;<br>&nbsp;String iBin = Integer.toBinaryString(i);//二进制&nbsp; <br>String iHex = Integer.toHexString(i);//十六进制 <br>String iOct = Integer.toOctalString(i);//八进制 <br><span style="COLOR: red">String iWoKao = Integer.toString(i,3);//三进制或任何你想要的35进制以下的进制<br></span><br><br>DEC[集]java</strong><wbr>中进行二进制，八进制，十六进制，十进制间进行相互转换&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>十进制转成十六进制：<br>Integer.toHexString(int i)<br>十进制转成八进制<br>Integer.toOctalString(int i) <br>十进制转成二进制<br>Integer.toBinaryString(int i)<br>十六进制转成十进制<br>Integer.valueOf("FFFF",16).toString()<br>八进制转成十进制<br>Integer.valueOf("876",8).toString()<br>二进制转十进制<br>Integer.valueOf("0101",2).toString()<br><br><br><span style="COLOR: red">有什么方法可以直接将2,8,16进制直接转换为10进制的吗?<br></span>java</strong><wbr>.lang.Integer类<br>parseInt(String s, int radix)<br>使用第二个参数指定的基数，将字符串参数解析为有符号的整数。<br><br>examples from jdk:<br>parseInt("0", 10) returns 0<br>parseInt("473", 10) returns 473<br>parseInt("-0", 10) returns 0<br>parseInt("-FF", 16) returns -255<br>parseInt("1100110", 2) returns 102<br>parseInt("2147483647", 10) returns 2147483647<br>parseInt("-2147483648", 10) returns -2147483648<br>parseInt("2147483648", 10) throws a NumberFormatException<br>parseInt("99", 8) throws a NumberFormatException<br>parseInt("Kona", 10) throws a NumberFormatException<br>parseInt("Kona", 27) returns 411787<br>进制转换</strong><wbr>如何写（二，八，十六）不用算法<br>Integer.toBinaryString<br>Integer.toOctalString<br>Integer.toHexString<br><br>例一：<br>public class Test{<br>public static void main(String args[]){<br>&nbsp;&nbsp; int i=100;<br>&nbsp;&nbsp; String binStr=Integer.toBinaryString(i);<br>&nbsp;&nbsp; String otcStr=Integer.toOctalString(i);<br>&nbsp;&nbsp; String hexStr=Integer.toHexString(i);<br>&nbsp;&nbsp; System.out.println(binStr);<br><br>例二：<br>public class TestStringFormat {<br>public static void main(String[] args) {<br>&nbsp;&nbsp; if (args.length == 0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("usage: java</strong><wbr> TestStringFormat &lt;a number&gt;");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.exit(0);<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; Integer factor = Integer.valueOf(args[0]);<br>&nbsp;&nbsp; String s;<br>&nbsp;&nbsp; s = String.format("%d", factor);<br>&nbsp;&nbsp; System.out.println(s);<br>&nbsp;&nbsp; s = String.format("%x", factor);<br>&nbsp;&nbsp; System.out.println(s);<br>&nbsp;&nbsp; s = String.format("%o", factor);<br>&nbsp;&nbsp; System.out.println(s);<br>}<br>}<br><br><span style="COLOR: red">各种数字类型转换成字符串型</span>：<br>String s = String.valueOf( value); // 其中 value 为任意一种数字类型。<br><br><span style="COLOR: red">字符串型转换成各种数字类型</span>：<br>String s = "169"; <br>byte b = Byte.parseByte( s ); <br>short t = Short.parseShort( s ); <br>int i = Integer.parseInt( s ); <br>long l = Long.parseLong( s ); <br>Float f = Float.parseFloat( s ); <br>Double d = Double.parseDouble( s );<br>数字类型与数字类对象之间的转换：<br>byte b = 169; <br>Byte bo = new Byte( b ); <br>b = bo.byteValue();<br>short t = 169; <br>Short to = new Short( t ); <br>t = to.shortValue();<br>int i = 169; <br>b = bo.byteValue();<br>short t = 169; <br>Short to = new Short( t ); <br>t = to.shortValue();<br>int i = 169; <br>Integer io = new Integer( i ); <br>i = io.intValue();<br>long l = 169; <br>Long lo = new Long( l ); <br>l = lo.longValue();<br>float f = 169f; <br>Float fo = new Float( f ); <br>f = fo.floatValue();<br>double d = 169f; <br>Double dObj = new Double( d ); <br>d = dObj.doubleValue();<img id=paperPicArea1 style="DISPLAY: none; POSITION: relative" src="http://imgcache.qq.com/ac/qzone_v4/b.gif"></p>
</blockquote>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/47871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2008-08-10 15:54 <a href="http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java的对齐输出方式</title><link>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47870.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sun, 10 Aug 2008 07:46:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47870.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/47870.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/47870.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/47870.html</trackback:ping><description><![CDATA[比如：四个空来输出 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1：1 <br>&nbsp;&nbsp;&nbsp; 10 ：10 <br>&nbsp; 100 ：100 <br>1000 ：1000<br><strong><wbr>问题补充：</strong><wbr>1的输出前面要有三个空格 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10前面有两个空格 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100前面有一个空格 <br><br>用格式化输出就行了吧： <br>System.out.printf("%4.0f : 1\n",1.0); <br>System.out.printf("%4.0f : 10\n",10.0); <br>System.out.printf("%4.0f : 100\n",100.0); <br>System.out.printf("%4.0f : 1000\n",1000.0);<img id=paperPicArea1 style="DISPLAY: none; POSITION: relative" src="http://imgcache.qq.com/ac/qzone_v4/b.gif"><br>&nbsp;&nbsp; 这样c语言中的格式化输出就可以在java中使用了，非常方便处理复杂的输出格式。
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/47870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2008-08-10 15:46 <a href="http://www.cnitblog.com/weiweibbs/archive/2008/08/10/47870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Scanner--控制台输入</title><link>http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43055.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Mon, 28 Apr 2008 13:21:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43055.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/43055.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/43055.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/43055.html</trackback:ping><description><![CDATA[Scanner类是JDK5新添加的一个类，主要作用是处理输入流、文件和文本内容等 。<br>这个类在java.util包里面，实现了Iterator接口，而且io处理采用了jdk1.4才发布的nio。<br>由于这个类实现了Iterator接口，如果全部是string的话，就可以采用next(),hasnext()来进行迭代，就像是迭代一个字符串集合一样。如果处理的内容不是string的话，这个类也提供了nextXXX(),hasNextXXX()方法，处理十分方便。<br>下面分别讲一下怎么处理输入流、文件和文本<br><span style="COLOR: red">1.输入流处理：</span><br>/** 输入流demo */<br>public static void inputStreamDemo() {<br>&nbsp;&nbsp;&nbsp; System.out.println("please input int &amp; double:");<br>&nbsp;&nbsp;&nbsp; Scanner cin = new Scanner(System.in);<br>&nbsp;&nbsp;&nbsp; int inputInt = cin.nextInt();<br>&nbsp;&nbsp;&nbsp; double inputDouble = cin.nextDouble();<br>&nbsp;&nbsp;&nbsp; System.out.printf("inputInt:%d\n", inputInt);<br>&nbsp;&nbsp;&nbsp; System.out.printf("inputDouble:%f\n\n", inputDouble);<br>}<br>首先声明Scanner cin = new Scanner(System.in);，然后调用Scanner的nextInt和nextDouble接受来自控制台输入的int和double。<br><span style="COLOR: red">2.文件处理：</span><br>/** 文件demo */<br>public static void fileDemo() throws Exception{<br>&nbsp;&nbsp;&nbsp; System.out.println("fileDemo:");<br>&nbsp;&nbsp;&nbsp; Scanner cin = new Scanner(new File("scannerDemo"));<br>&nbsp;&nbsp;&nbsp; while(cin.hasNextLine()){<br>&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(cin.nextLine());<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; cin.close();<br>&nbsp;&nbsp;&nbsp; System.out.println();<br>}<br>如果是文件输入流的话，就不用取得一个输入流的，只需要新建一个file传入Scanner的构造参数就行了。hasNextLine和nextLine方法可以发现和Iterator的函数相当类似。<br>注意如果处理文件的话，处理完毕一定要关闭文件。如果需要处理一个文件的话，用这个类不止代码上复杂度有所减少，而且采用了nio，所以性能上也有保证。<br><span style="COLOR: red">3.文本处理</span><br>/** string demo*/<br>public static void stringDemo() {<br>&nbsp;&nbsp;&nbsp; System.out.println("stringDemo:");<br>&nbsp;&nbsp;&nbsp; String str="10 9 stringDemo 9.8";<br>&nbsp;&nbsp;&nbsp; Scanner cin = new Scanner(str);<br>&nbsp;&nbsp;&nbsp; System.out.println("inputInt:"+cin.nextInt());<br>&nbsp;&nbsp;&nbsp; System.out.println("inputInt:"+cin.nextInt());<br>&nbsp;&nbsp;&nbsp; System.out.println("inputString:"+cin.next());<br>&nbsp;&nbsp;&nbsp; System.out.println("inputDouble:"+cin.nextDouble());<br>}<br>这个用法和输入流的基本类似，区别就是构造函数而已。<br>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/43055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2008-04-28 21:21 <a href="http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ACM中使用JAVA的介绍 </title><link>http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43053.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Mon, 28 Apr 2008 13:07:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43053.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/43053.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/43053.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/43053.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>Chapter I. </p>
<p>Java的优缺点各种书上都有，这里只说说用Java做ACM-ICPC的特点： </p>
<p>(1) 最明显的好处是，学会Java，可以参加Java Challenge&nbsp;&nbsp; <br>(2) 对于熟悉C/C++的程序员来说，Java 并不难学，找本书，一两周业余时间就可以搞定了。当然，这里只是指一般编程，想熟悉所有的Java库还是需要些时间的。事实上，Java 只相当于C++的一个改进版，所有的语法都几乎是C++的，很少有变动。 <br>(3) 在一般比赛中，Java程序会有额外的时间和空间，而实际上经过实验，在执行计算密集任务的时候Java并不比C/C++慢多少，只是IO操作较慢而已。 <br>(4) Java 简单而功能强大，有些东西用Java实现起来更为方便，比如高精度。 <br>(5) 用Java不易犯细微的错误，比如C/C++中的指针， &#8220;if (n = m) ... &#8221; 等 <br>(6) 目前来看Eclipse已成基本配置，写Java程序反而比C/C++更方便调试。在具体竞赛时也算多一种选择。 <br>(7) 学会Java对以后工作有好处。现在国外很多地方会Java的人比会C/C++的人多。 <br>(8) 会Java可以使你看起来更像偶蹄类动物（牛）&nbsp;&nbsp;&nbsp; hoho~ </p>
<p><br>Chapter II. </p>
<p>下面说一下ACM-ICPC队员初用Java编程所遇到的一些问题： </p>
<p>1. 基本输入输出： </p>
<p>(1) JDK 1.5.0 新增的Scanner类为输入提供了良好的基础，简直就是为ACM-ICPC而设的。 </p>
<p>一般用法为： </p>
<p>import java.io.* <br>import java.util.* </p>
<p>public class Main <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String args[]) <br>&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Scanner cin = new Scanner(new BufferedInputStream(System.in)); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>} </p>
<p style="COLOR: red">当然也可以直接 Scanner cin = new Scanner(System.in); <br>只是加Buffer可能会快一些 </p>
<p>(2) <br>读一个整数：&nbsp;&nbsp; int n = cin.nextInt();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp; scanf("%d", &amp;n);&nbsp;&nbsp; 或 cin &gt;&gt; n; <br>读一个字符串：String s = cin.next();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp; scanf("%s", s);&nbsp;&nbsp;&nbsp; 或 cin &gt;&gt; s; <br>读一个浮点数：double t = cin.nextDouble();&nbsp;&nbsp; 相当于&nbsp;&nbsp; scanf("%lf", &amp;t); 或 cin &gt;&gt; t; <br>读一整行：&nbsp;&nbsp;&nbsp;&nbsp; String s = cin.nextLine();&nbsp;&nbsp;&nbsp;&nbsp; 相当于&nbsp;&nbsp; gets(s);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 或 cin.getline(...); <br>判断是否有下一个输入可以用 cin.hasNext() 或 cin.hasNextInt() 或 cin.hasNextDouble() 等，具体见 TOJ 1001 例程。 </p>
<p>(3) <br>输出一般可以直接用 System.out.print() 和 System.out.println()，前者不输出换行，而后者输出。 <br>比如：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(n);&nbsp;&nbsp; // n 为 int 型 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同一行输出多个整数可以用&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(new Integer(n).toString() + " " + new Integer(m).toString());&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也可重新定义： </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static PrintWriter cout = new PrintWriter(new BufferedOutputStream(System.out));&nbsp;&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout.println(n); </p>
<p>(4) <br>对于输出浮点数保留几位小数的问题，可以使用DecimalFormat类， </p>
<p>import java.text.*; <br>DecimalFormat f = new DecimalFormat("#.00#"); <br>DecimalFormat g = new DecimalFormat("0.000"); <br>double a = 123.45678, b = 0.12; <br>System.out.println(f.format(a)); <br>System.out.println(f.format(b)); <br>System.out.println(g.format(b)); </p>
<p>这里0指一位数字，#指除0以外的数字。 </p>
<p>2. 大数字 </p>
<p>BigInteger 和 BigDecimal 是在java.math包中已有的类，前者表示整数，后者表示浮点数 </p>
<p>用法： <br>不能直接用符号如+、-来使用大数字，例如： </p>
<p>(import java.math.*)&nbsp;&nbsp; // 需要引入 java.math 包 </p>
<p>BigInteger a = BigInteger.valueOf(100); <br>BigInteger b = BigInteger.valueOf(50); <br>BigInteger c = a.add(b)&nbsp;&nbsp; // c = a + b; </p>
<p>主要有以下方法可以使用： <br>BigInteger add(BigInteger other) <br>BigInteger subtract(BigInteger other) <br>BigInteger multiply(BigInteger other) <br>BigInteger divide(BigInteger other) <br>BigInteger mod(BigInteger other) <br>int compareTo(BigInteger other) <br>static BigInteger valueOf(long x) </p>
<p>输出大数字时直接使用 System.out.println(a) 即可。 </p>
<p>3. 字符串 </p>
<p>String 类用来存储字符串，可以用charAt方法来取出其中某一字节，计数从0开始： </p>
<p>String a = "Hello";&nbsp;&nbsp;&nbsp; // a.charAt(1) = &#8217;e&#8217; </p>
<p>用substring方法可得到子串，如上例 </p>
<p>System.out.println(a.substring(0, 4))&nbsp;&nbsp;&nbsp;&nbsp; // output "Hell" </p>
<p>注意第2个参数位置上的字符不包括进来。这样做使得 s.substring(a, b) 总是有 b-a个字符。 </p>
<p>字符串连接可以直接用 + 号，如 </p>
<p>String a = "Hello"; <br>String b = "world"; <br>System.out.println(a + ", " + b + "!");&nbsp;&nbsp;&nbsp; // output "Hello, world!" </p>
<p>如想直接将字符串中的某字节改变，可以使用另外的StringBuffer类。 </p>
<p><br>4. 调用递归（或其他动态方法） </p>
<p>在主类中 main 方法必须是 public static void 的，在 main 中调用非static类时会有警告信息， <br>可以先建立对象，然后通过对象调用方法： </p>
<p>public class Main <br>{ <br>&nbsp;&nbsp;&nbsp;&nbsp; ... </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; void dfs(int a) <br>&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (...) return; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dfs(a+1); <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String args[]) <br>&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main e = new Main(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.dfs(0); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>} </p>
<p>5. 其他注意的事项 </p>
<p>(1) Java 是面向对象的语言，思考方法需要变换一下，里面的函数统称为方法，不要搞错。 </p>
<p>(2) Java 里的数组有些变动，多维数组的内部其实都是指针，所以Java不支持fill多维数组。 <br>&nbsp;&nbsp;&nbsp;&nbsp; 数组定义后必须初始化，如 int[] a = new int[100]; </p>
<p>(3) 布尔类型为 boolean，只有true和false二值，在 if (...) / while (...) 等语句的条件中必须为boolean类型。 <br>&nbsp;&nbsp;&nbsp;&nbsp; 在C/C++中的 if (n % 2) ... 在Java中无法编译通过。 </p>
<p>(4) 下面在java.util包里Arrays类的几个方法可替代C/C++里的memset、qsort/sort 和 bsearch: </p>
<p>Arrays.fill() <br>Arrays.sort() <br>Arrays.binarySearch()&nbsp;&nbsp; <br>&nbsp;</p>
<p>&nbsp; <br>&nbsp;<br></p>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/43053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2008-04-28 21:07 <a href="http://www.cnitblog.com/weiweibbs/archive/2008/04/28/43053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java写的大数算法</title><link>http://www.cnitblog.com/weiweibbs/archive/2008/04/27/42846.html</link><dc:creator>hobo</dc:creator><author>hobo</author><pubDate>Sun, 27 Apr 2008 14:19:00 GMT</pubDate><guid>http://www.cnitblog.com/weiweibbs/archive/2008/04/27/42846.html</guid><wfw:comment>http://www.cnitblog.com/weiweibbs/comments/42846.html</wfw:comment><comments>http://www.cnitblog.com/weiweibbs/archive/2008/04/27/42846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/weiweibbs/comments/commentRss/42846.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/weiweibbs/services/trackbacks/42846.html</trackback:ping><description><![CDATA[用例子阐述：&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 例题：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div v:shape="_x0000_s1026">
<div><span><span>n</span></span><span>POJ 1503<span>&nbsp;&nbsp; </span>Integer Inquiry <br></span></div>
<div><span><span>&#8211;</span></span><span>Description<br></span><span>省略</span><span> <br></span></div>
<div><span><span>&#8211;</span></span><span>Input<br></span><span>The input will consist of at most 100 lines of text, each of which contains a </span><span>single VeryLongInteger. Each VeryLongInteger will be 100 or fewer characters </span><span>in length, and will only contain digits (no VeryLongInteger will be negative). <br></span><span><br></span><span>The final input line will contain a single zero on a line by itself. <br></span></div>
<div><span><span>&#8211;</span></span><span>Output<br></span><span>Your program should output the sum of the VeryLongIntegers given in the </span><span>input. </span></div>
<div><span><span>&#8211;</span></span><span>Sample Input<br></span></div>
<div><span><span>&#8226;</span></span><span>123456789012345678901234567890 </span></div>
<div><span><span>&#8226;</span></span><span>123456789012345678901234567890 </span></div>
<div><span><span>&#8226;</span></span><span>123456789012345678901234567890 </span></div>
<div><span><span>&#8226;</span></span><span>0 </span></div>
<div><span><span>&#8211;</span></span><span>Sample Output<br></span></div>
<div><span><span>&#8226;</span></span><span>370370367037037036703703703670 </span></div>
<div></div>
<br><br>题解：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div v:shape="_x0000_s1026">
<div><span>import java.io.*; </span></div>
<div><span>import java.util.*; </span></div>
<div><span>import java.math.BigInteger; </span></div>
<div><span>public class Main { </span></div>
<div><span>public static void main(String[] args){ </span></div>
<div><span>BigInteger sum=new BigInteger("0"); </span></div>
<div><span>BigInteger num; </span></div>
<div><span>Scanner cin=new Scanner(System.in); </span></div>
<div><span>for(;;) </span></div>
<div><span>{<span> </span></span></div>
<div><span>num=cin.nextBigInteger(); </span></div>
<div><span>if(num.toString()=="0")break; </span></div>
<div><span>sum=sum.add(num); </span></div>
<div><span>} </span></div>
<div><span>System.out.println(sum.toString());<span> </span></span></div>
<div><span>} </span></div>
<div><span>}</span><span> </span></div>
<div></div>
</div>
<br>补方法如下：<br><br><br><strong>add</strong>
<pre> public <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> add(<a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> val) throws <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.lang.arithmeticexception_dsc.htm#_top_"><u><font color=#0000ff>ArithmeticException</font></u></a>
</pre>
<dl>
<dd>返回一个 BigInteger ，其值是 (this + val) 。
<p>&nbsp;</p>
</dd></dl><a name=subtract(java.math.BigInteger)></a><strong>subtract</strong>
<pre> public <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> subtract(<a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> val)
</pre>
<dl>
<dd>返回一个 BigInteger ，其值是 (this - val) 。
<p>&nbsp;</p>
</dd></dl><a name=multiply(java.math.BigInteger)></a><strong>multiply</strong>
<pre> public <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> multiply(<a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> val)
</pre>
<dl>
<dd>返回一个 BigInteger ，其值是 (this * val) 。
<p>&nbsp;</p>
</dd></dl><a name=divide(java.math.BigInteger)></a><strong>divide</strong>
<pre> public <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> divide(<a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> val) throws <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.lang.arithmeticexception_dsc.htm#_top_"><u><font color=#0000ff>ArithmeticException</font></u></a>
</pre>
<dl>
<dd>返回一个 BigInteger ，其值是 (this / val) 。 如果 val == 0 ，则抛出 ArithmeticException 。
<p>&nbsp;</p>
</dd></dl><a name=remainder(java.math.BigInteger)></a><strong>remainder</strong>
<pre> public <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> remainder(<a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.math.biginteger_dsc.htm#_top_"><u><font color=#0000ff>BigInteger</font></u></a> val) throws <a href="mk:@MSITStore:F:\学习与工作\JAVA%20学习\JAVA电子书\jdk.chm::/javaref/java.lang.arithmeticexception_dsc.htm#_top_"><u><font color=#0000ff>ArithmeticException</font></u></a>
</pre>
<dl>
<dd>返回一个 BigInteger ，其值是 (this % val) 。 如果 val == 0，则抛出 ArithmeticException 。 <br></dd></dl></div>
<img src ="http://www.cnitblog.com/weiweibbs/aggbug/42846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/weiweibbs/" target="_blank">hobo</a> 2008-04-27 22:19 <a href="http://www.cnitblog.com/weiweibbs/archive/2008/04/27/42846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>