Java ACM竞赛入门:语法与输入输出

5星 · 超过95%的资源 需积分: 16 97 下载量 101 浏览量 更新于2024-09-18 收藏 29KB DOC 举报
"Java语言用于ACM竞赛的入门知识,主要涵盖Java语法基础,包括输入输出、数值处理、字符串操作和高精度计算,以及进制转换等,旨在解决在线判题系统上的高精度问题。" 在Java语言中,ACM(国际大学生程序设计竞赛)的准备需要掌握一些特定的技术点。以下是一些核心知识点的详细说明: 1. 输入处理: Java中,我们可以使用`java.util.Scanner`类来读取用户输入。对于ACM题目,通常需要处理整数、浮点数、大数等类型的数据。下面是一个简单的例子: ```java import java.io.*; import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); int a; double b; BigInteger c; String st; a = cin.nextInt(); // 读取整数 b = cin.nextDouble(); // 读取浮点数 c = cin.nextBigInteger(); // 读取大数 st = cin.nextLine(); // 读取一行文本 } ``` `nextInt()`, `nextDouble()`, `nextBigInteger()`分别是对应类型的标准输入函数。 2. 输出处理: Java提供了多种输出方式,适应不同需求。如: - `System.out.print()`: 连续输出,不会换行。 - `System.out.println()`: 输出并换行。 - `System.out.printf()`: 格式化输出,类似于C语言的`printf`函数,可以精确控制输出格式。 下面是一个输出示例: ```java import java.io.*; public class Main { public static void main(String[] args) { int a = 12345; double b = 1.234567; System.out.println(a + "" + b); // 普通连接输出 System.out.printf("%d%10.5f\n", a, b); // 格式化输出,保留小数点后5位,四舍五入 } ``` 3. 高精度计算: 在Java中,处理大整数可使用`java.math.BigInteger`类,它可以进行任意精度的算术运算。例如: ```java BigInteger bigA = BigInteger.valueOf(123456789L); BigInteger bigB = BigInteger.valueOf(987654321L); BigInteger sum = bigA.add(bigB); // 加法 BigInteger product = bigA.multiply(bigB); // 乘法 ``` 4. 字符串处理: Java的`String`类提供了丰富的字符串操作方法,如拼接、查找、替换、分割等。 5. 进制转换: Java中,可以使用`Integer.toString(int, radix)`和`Integer.parseInt(String, radix)`进行不同进制间的转换。例如: ```java int decimal = 10; String binaryStr = Integer.toBinaryString(decimal); // 将十进制转为二进制字符串 int backToDecimal = Integer.parseInt(binaryStr, 2); // 二进制字符串转回十进制 ``` 6. 规格化输出: 对于需要特定格式的输出,可以使用`java.text.DecimalFormat`类。例如: ```java DecimalFormat fd = new DecimalFormat("0.00"); // 保留两位小数 String formatted = fd.format(123.456); // "123.46" ``` 了解并熟练运用这些基本知识,可以帮助你顺利解决ACM竞赛中的编程问题。在实际编程过程中,还需要结合数据结构、算法等知识,进行更高效的编程。
2018-10-09 上传
本书的目标读者是准备去硅谷找工作的码农,也适用于在国内找工作的码农,以及刚接触ACM算法竞赛的新手。 市场上讲解算法的书已经汗牛充栋,为什么还要写这本书呢?主要原因是我对目前市场上的大部分算法书都不太满意。 本书有如下特色: 背后有强大的AlgoHub支持。 本书的所有题目,都可以在 www.algohub.org(即将上线) 上在线判断代码。这样的一大好处是,读者可以边看书,边实现自己的代码,然后提交到网站上验证自己的想法是否正确。AlgoHub的使命是成为最好的算法学习和交流平台。AlgoHub囊括了 POJ, ZOJ, leetcode, HackerRank 等网站的经典题目(一些质量不高的题目则忽略),且 AlgoHub有非常简单的加题系统,用户不需要写一行代码即可自己添加题目,所以AlgoHub的题库还在飞速增长中。 每道题都有完整的代码。 市场上的大部分书,都会讲思路,但给出的代码都是片段,不是完整可编译的代码。本书每题都有完整的代码,且每个代码经过千锤百炼,保证可读性的前提下尽可能简短,方面读者在面试中能快速写出来。 每道题都有多种解法。 本书的宗旨是,用尽可能少的题目,覆盖尽可能多的算法。本书中的的每道题都有多种解法,每种解法不是简单的小改进,而是完全不同的思路,力求举一反三,让读者触类旁通。 本书支持多种主流编程语言。 目前支持 Java, C++, C#, Python, Ruby, JavaScript, Swift, Scala, Clojure, 将来还会支持更多编程语言。