Java在ACM中的应用
Java在ACM中的应用
—. 在java中的基本头文件(java中叫包)
import java.io.*;
import java.util.*; //输入Scanner
import java.math.*; //BigInteger && BigDecimal
二. 输入与输出
读入: Scanner cin = new Scanner (System.in);
推荐:Scanner cin = new Scanner (new BufferedInputStream (System.in));
Scanner cin = new Scanner(System.in);
类名 对象名 构造函数 参数
Scanner类提供了非常丰富的成员函数来负责读取各种数据类型:
返回值 成员函数
boolean hasNext()
相当于C++的!=EOF
String next(String pattern)
如果下一个标记与从指定字符串构造的模式匹配,则返回下一个标记,
如果参数为空,就是读取一个字符串
BigDecimal nextBigDecimal()
将输入信息的下一个标记扫描为一个 BigDecimal。
BigInteger nextBigInteger()
将输入信息的下一个标记扫描为一个 BigInteger。
boolean nextBoolean()
扫描解释为一个布尔值的输入标记并返回该值。
byte nextByte()
将输入信息的下一个标记扫描为一个 byte。
double nextDouble()
将输入信息的下一个标记扫描为一个 double。
float nextFloat()
将输入信息的下一个标记扫描为一个 float。
int nextInt()
将输入信息的下一个标记扫描为一个 int。
String nextLine()
此扫描器执行当前行,并返回跳过的输入信息。
long nextLong()
将输入信息的下一个标记扫描为一个 long。
short nextShort()
将输入信息的下一个标记扫描为一个 short。
对于输出浮点数保留几位小数的问题,可以使用DecimalFormat类,
import java.text.*;
DecimalFormat f = new DecimalFormat("#.00#");
DecimalFormat g = new DecimalFormat("0.000");
double a = 123.45678, b = 0.12;
System.out.println(f.format(a)); //123.457
System.out.println(f.format(b)); //.12
System.out.println(g.format(b)); //0.120
System.out.print(); // cout << …;
System.out.println(); //与C++的cout << … <<endl;
System.out.printf(); //与C中的printf用法类似.
三. 定义变量
定义单个变量:
int a,b,c; //和C++ 中无区别
BigInteger a; //定义大数变量a
BigInteger b = new BigInteger ("2"); //定义大数变量 b赋值为 2;
BigDecimaln; //定义大浮点数类 n;
boolean : 布尔值,仅有两个值,true和false.
byte :字节类型值,长度8位(一个字节),范围-128至127。
short:短整型值,长度16位(两个字节),范围-32768至32767。
int:整型值,长度32位(四个字节),范围-2147483648至2147483647
long:长整型,长度64位(八个字节),范围-9223372036854775808至9223372036854775807
float:单精度浮点数,长度32位(四个字节)。
double:双精度浮点数,长度64位(八个字节)。
char:字符型,长度16位,支持所有的UCS-2和ASCII编码。
除了以上的8种基本数据类型,对于ACMer还有BigInteger,BigDecimal,String三个类经常使用.
四.写法
import java.math.*;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
}
}
五.注意事项
(1) Java 是面向对象的语言,思考方法需要变换一下,里面的函数统称为方法,不要搞错。
(2) Java 里的数组有些变动,多维数组的内部其实都是指针,所以Java不支持fill多维数组。数组定义后必须初始化,如 int[] a = new int[100];
(3) 布尔类型为 boolean,只有true和false二值,在 if (...) / while (...) 等语句的条件中必须为boolean类型。 在C/C++中的 if (n % 2) ... 在Java中无法编译通过。
(4) 下面在java.util包里Arrays类的几个方法可替代C/C++里的memset、qsort/sort 和 bsearch:
Arrays.fill()
Arrays.sort()
Arrays.binarySearch()
BigInteger
java.math
类 BigInteger
java.lang.Object
java.lang.Number
java.math.BigInteger
所有已实现的接口:
Serializable, Comparable<BigInteger>
public class BigInteger
extends Number
implements Comparable<BigInteger>
不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
算术运算的语义完全模仿 Java 整数算术运算符的语义,如 The Java Language Specification 中所定义的。例如,以零作为除数的除法抛出 ArithmeticException,而负数除以正数的除法则产生一个负(或零)的余数。Spec 中关于溢出的细节都被忽略了,因为 BigIntegers 所设置的实际大小能适应操作结果的需要。
位移操作的语义扩展了 Java 的位移操作符的语义以允许产生负位移距离。带有负位移距离的右移操作会导致左移操作,反之亦然。忽略无符号的右位移运算符(>>>),因为该操作与由此类提供的“无穷大的词大小”抽象结合使用时毫无意义。
逐位逻辑运算的语义完全模仿 Java 的逐位整数运算符的语义。在执行操作之前,二进制运算符(and、or、xor)对两个操作数中的较短操作数隐式执行符号扩展。
比较操作执行有符号的整数比较,类似于 Java 的关系运算符和相等性运算符执行的比较。
提供的模算术操作用来计算余数、求幂和乘法可逆元。这些方法始终返回非负结果,范围在 0 和 (modulus - 1)(包括)之间。
位操作对其操作数的二进制补码表示形式的单个位进行操作。如有必要,操作数会通过扩展符号来包含指定的位。单一位操作不能产生与正在被操作的 BigInteger 符号不同的 BigInteger,因为它们仅仅影响单个位,并且此类提供的“无穷大词大小”抽象可保证在每个 BigInteger 前存在无穷多的“虚拟符号位”数。
|
字段摘要 |
|
|
static BigInteger |
ONE |
|
static BigInteger |
TEN |
|
static BigInteger |
ZERO |
|
构造方法摘要 |
|
|
BigInteger(byte[] val) |
|
|
BigInteger(int signum, byte[] magnitude) |
|
|
BigInteger(int bitLength, int certainty, Random rnd) |
|
|
BigInteger(int numBits, Random rnd) |
|
|
BigInteger(String val) |
|
|
BigInteger(String val, int radix) |
|
|
方法摘要 |
|
|
BigInteger |
abs() |
|
BigInteger |
add(BigInteger val) |
|
BigInteger |
and(BigInteger val) |
|
BigInteger |
andNot(BigInteger val) |
|
int |
bitCount() |
|
int |
bitLength() |
|
BigInteger |
clearBit(int n) |
|
int |
compareTo(BigInteger val) |
|
BigInteger |
divide(BigInteger val) |
|
BigInteger[] |
divideAndRemainder(BigInteger val) |
|
double |
doubleValue() |
|
boolean |
equals(Object x) |
|
BigInteger |
flipBit(int n) |
|
float |
floatValue() |
|
BigInteger |
gcd(BigInteger val) |
|
int |
getLowestSetBit() |
|
int |
hashCode() |
|
int |
intValue() |
|
boolean |
isProbablePrime(int certainty) |
|
long |
longValue() |
|
BigInteger |
max(BigInteger val) |
|
BigInteger |
min(BigInteger val) |
|
BigInteger |
mod(BigInteger m) |
|
BigInteger |
modInverse(BigInteger m) |
|
BigInteger |
modPow(BigInteger exponent, BigInteger m) |
|
BigInteger |
multiply(BigInteger val) |
|
BigInteger |
negate() |
|
BigInteger |
nextProbablePrime() |
|
BigInteger |
not() |
|
BigInteger |
or(BigInteger val) |
|
BigInteger |
pow(int exponent) |
|
static BigInteger |
probablePrime(int bitLength, Random rnd) |
|
BigInteger |
remainder(BigInteger val) |
|
BigInteger |
setBit(int n) |
|
BigInteger |
shiftLeft(int n) |
|
BigInteger |
shiftRight(int n) |
|
int |
signum() |
|
BigInteger |
subtract(BigInteger val) |
|
boolean |
testBit(int n) |
|
byte[] |
toByteArray() |
|
String |
toString() |
|
String |
toString(int radix) |
|
static BigInteger |
valueOf(long val) |
|
BigInteger |
xor(BigInteger val) |
BigDecimal
java.math
类 BigDecimal
java.lang.Object
java.lang.Number
java.math.BigDecimal
所有已实现的接口:
Serializable, Comparable<BigDecimal>
public class BigDecimal
extends Number
implements Comparable<BigDecimal>
不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。
BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString() 方法提供 BigDecimal 的规范表示形式。
|
字段摘要 |
|
|
static BigDecimal |
ONE |
|
static int |
ROUND_CEILING |
|
static int |
ROUND_DOWN |
|
static int |
ROUND_FLOOR |
|
static int |
ROUND_HALF_DOWN |
|
static int |
ROUND_HALF_EVEN |
|
static int |
ROUND_HALF_UP |
|
static int |
ROUND_UNNECESSARY |
|
static int |
ROUND_UP |
|
static BigDecimal |
TEN |
|
static BigDecimal |
ZERO |
|
构造方法摘要 |
|
|
BigDecimal(BigInteger val) |
|
|
BigDecimal(BigInteger unscaledVal, int scale) |
|
|
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) |
|
|
BigDecimal(BigInteger val, MathContext mc) |
|
|
BigDecimal(char[] in) |
|
|
BigDecimal(char[] in, int offset, int len) |
|
|
BigDecimal(char[] in, int offset, int len, MathContext mc) |
|
|
BigDecimal(char[] in, MathContext mc) |
|
|
BigDecimal(double val) |
|
|
BigDecimal(double val, MathContext mc) |
|
|
BigDecimal(int val) |
|
|
BigDecimal(int val, MathContext mc) |
|
|
BigDecimal(long val) |
|
|
BigDecimal(long val, MathContext mc) |
|
|
BigDecimal(String val) |
|
|
BigDecimal(String val, MathContext mc) |
|
|
方法摘要 |
|
|
BigDecimal |
abs() |
|
BigDecimal |
abs(MathContext mc) |
|
BigDecimal |
add(BigDecimal augend) |
|
BigDecimal |
add(BigDecimal augend, MathContext mc) |
|
byte |
byteValueExact() |
|
int |
compareTo(BigDecimal val) |
|
BigDecimal |
divide(BigDecimal divisor) |
|
BigDecimal |
divide(BigDecimal divisor, int roundingMode) |
|
BigDecimal |
divide(BigDecimal divisor, int scale, int roundingMode) |
|
BigDecimal |
divide(BigDecimal divisor, int scale, RoundingMode roundingMode) |
|
BigDecimal |
divide(BigDecimal divisor, MathContext mc) |
|
BigDecimal |
divide(BigDecimal divisor, RoundingMode roundingMode) |
|
BigDecimal[] |
divideAndRemainder(BigDecimal divisor) |
|
BigDecimal[] |
divideAndRemainder(BigDecimal divisor, MathContext mc) |
|
BigDecimal |
divideToIntegralValue(BigDecimal divisor) |
|
BigDecimal |
divideToIntegralValue(BigDecimal divisor, MathContext mc) |
|
double |
doubleValue() |
|
boolean |
equals(Object x) |
|
float |
floatValue() |
|
int |
hashCode() |
|
int |
intValue() |
|
int |
intValueExact() |
|
long |
longValue() |
|
long |
longValueExact() |
|
BigDecimal |
max(BigDecimal val) |
|
BigDecimal |
min(BigDecimal val) |
|
BigDecimal |
movePointLeft(int n) |
|
BigDecimal |
movePointRight(int n) |
|
BigDecimal |
multiply(BigDecimal multiplicand) |
|
BigDecimal |
multiply(BigDecimal multiplicand, MathContext mc) |
|
BigDecimal |
negate() |
|
BigDecimal |
negate(MathContext mc) |
|
BigDecimal |
plus() |
|
BigDecimal |
plus(MathContext mc) |
|
BigDecimal |
pow(int n) |
|
BigDecimal |
pow(int n, MathContext mc) |
|
int |
precision() |
|
BigDecimal |
remainder(BigDecimal divisor) |
|
BigDecimal |
remainder(BigDecimal divisor, MathContext mc) |
|
BigDecimal |
round(MathContext mc) |
|
int |
scale() |
|
BigDecimal |
scaleByPowerOfTen(int n) |
|
BigDecimal |
setScale(int newScale) |
|
BigDecimal |
setScale(int newScale, int roundingMode) |
|
BigDecimal |
setScale(int newScale, RoundingMode roundingMode) |
|
short |
shortValueExact() |
|
int |
signum() |
|
BigDecimal |
stripTrailingZeros() |
|
BigDecimal |
subtract(BigDecimal subtrahend) |
|
BigDecimal |
subtract(BigDecimal subtrahend, MathContext mc) |
|
BigInteger |
toBigInteger() |
|
BigInteger |
toBigIntegerExact() |
|
String |
toEngineeringString() |
|
String |
toPlainString() |
|
String |
toString() |
|
BigDecimal |
ulp() |
|
BigInteger |
unscaledValue() |
|
static BigDecimal |
valueOf(double val) |
|
static BigDecimal |
valueOf(long val) |
|
static BigDecimal |
valueOf(long unscaledVal, int scale) |
String
java.lang
类 String
java.lang.Object
java.lang.String
所有已实现的接口:
Serializable, CharSequence, Comparable<String>
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
下面给出了一些如何使用字符串的更多示例:
System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);
|
字段摘要 |
|
|
static Comparator<String> |
CASE_INSENSITIVE_ORDER |
|
构造方法摘要 |
|
|
String() |
|
|
String(byte[] bytes) |
|
|
String(byte[] bytes, Charset charset) |
|
|
String(byte[] ascii, int hibyte) |
|
|
String(byte[] bytes, int offset, int length) |
|
|
String(byte[] bytes, int offset, int length, Charset charset) |
|
|
String(byte[] ascii, int hibyte, int offset, int count) |
|
|
String(byte[] bytes, int offset, int length, String charsetName) |
|
|
String(byte[] bytes, String charsetName) |
|
|
String(char[] value) |
|
|
String(char[] value, int offset, int count) |
|
|
String(int[] codePoints, int offset, int count) |
|
|
String(String original) |
|
|
String(StringBuffer buffer) |
|
|
String(StringBuilder builder) |
|
|
方法摘要 |
|
|
char |
charAt(int index) |
|
int |
codePointAt(int index) |
|
int |
codePointBefore(int index) |
|
int |
codePointCount(int beginIndex, int endIndex) |
|
int |
compareTo(String anotherString) |
|
int |
compareToIgnoreCase(String str) |
|
String |
concat(String str) |
|
boolean |
contains(CharSequence s) |
|
boolean |
contentEquals(CharSequence cs) |
|
boolean |
contentEquals(StringBuffer sb) |
|
static String |
copyValueOf(char[] data) |
|
static String |
copyValueOf(char[] data, int offset, int count) |
|
boolean |
endsWith(String suffix) |
|
boolean |
equals(Object anObject) |
|
boolean |
equalsIgnoreCase(String anotherString) |
|
static String |
format(Locale l, String format, Object... args) |
|
static String |
format(String format, Object... args) |
|
byte[] |
getBytes() |
|
byte[] |
getBytes(Charset charset) |
|
void |
getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) |
|
byte[] |
getBytes(String charsetName) |
|
void |
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) |
|
int |
hashCode() |
|
int |
indexOf(int ch) |
|
int |
indexOf(int ch, int fromIndex) |
|
int |
indexOf(String str) |
|
int |
indexOf(String str, int fromIndex) |
|
String |
intern() |
|
boolean |
isEmpty() |
|
int |
lastIndexOf(int ch) |
|
int |
lastIndexOf(int ch, int fromIndex) |
|
int |
lastIndexOf(String str) |
|
int |
lastIndexOf(String str, int fromIndex) |
|
int |
length() |
|
boolean |
matches(String regex) |
|
int |
offsetByCodePoints(int index, int codePointOffset) |
|
boolean |
regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) |
|
boolean |
regionMatches(int toffset, String other, int ooffset, int len) |
|
String |
replace(char oldChar, char newChar) |
|
String |
replace(CharSequence target, CharSequence replacement) |
|
String |
replaceAll(String regex, String replacement) |
|
String |
replaceFirst(String regex, String replacement) |
|
String[] |
split(String regex) |
|
String[] |
split(String regex, int limit) |
|
boolean |
startsWith(String prefix) |
|
boolean |
startsWith(String prefix, int toffset) |
|
CharSequence |
subSequence(int beginIndex, int endIndex) |
|
String |
substring(int beginIndex) |
|
String |
substring(int beginIndex, int endIndex) |
|
char[] |
toCharArray() |
|
String |
toLowerCase() |
|
String |
toLowerCase(Locale locale) |
|
String |
toString() |
|
String |
toUpperCase() |
|
String |
toUpperCase(Locale locale) |
|
String |
trim() |
|
static String |
valueOf(boolean b) |
|
static String |
valueOf(char c) |
|
static String |
valueOf(char[] data) |
|
static String |
valueOf(char[] data, int offset, int count) |
|
static String |
valueOf(double d) |
|
static String |
valueOf(float f) |
|
static String |
valueOf(int i) |
|
static String |
valueOf(long l) |
|
static String |
valueOf(Object obj) |
Java在ACM中的应用的更多相关文章
- java在acm中常用基础技巧方法
java在acm中常用基础技巧方法 如果学到了新的技巧,本博客会更新~ input input-std @Frosero import java.util.*; public class Main { ...
- [原创]浅谈JAVA在ACM中的应用
由于java里面有一些东西比c/c++方便(尤其是大数据高精度问题,备受广大ACMer欢迎),所以就可以灵活运用这三种来实现编程,下面是我自己在各种大牛那里总结了一些,同时加上自己平时遇到的一些jav ...
- Java在ACM中的使用
1.基本框架 import java.oi.*; import java.util.* public class Main { public static void main(St ...
- Java基础__Java中常用数学类Math那些事
测试 package Cynical_Gary; public class Cynical_Text { public static void main(String[] args){ System ...
- ACM中Java的应用
先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C++的程序员来说Java 并不难学,两周时间基本可以搞定一般的编程,再用些时间了解一下Java库就行了.Java的语法和C++非常类似, ...
- 【经验总结】Java在ACM算法竞赛编程中易错点
一.Java之ACM易错点 1. 类名称必须采用public class Main方式命名 2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错误,所以在我看来好多OJ系统做的是非 ...
- ACM中使用 JAVA v2. 1
ACM中使用JAVA v2.1 严明超 (Blog:mingchaoyan.blogbus.com Email:mingchaoyan@gmail.com) 0.前 言 文前声明:本文只谈java用于 ...
- Java中的BigInteger在ACM中的应用
Java中的BigInteger在ACM中的应用 在ACM中的做题时,常常会遇见一些大数的问题.这是当我们用C或是C++时就会认为比較麻烦.就想有没有现有的现有的能够直接调用的BigInter,那样就 ...
- ACM中java的使用
ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...
随机推荐
- 如何用Jquery判断在键盘上敲的哪个按键
有时候我们需要判断我们在键盘上敲了哪个键,这个需要查询下键盘上的键对应的值是多少,比如Enter键是13. 下面是Jquery代码,别忘了引用Jquery包哈. <script type=&qu ...
- IIS配置默认文档
我们在配置IIS的默认文档时是在这里配置的,如下图: 但是,有可能我们的根目录下没有这个文件,而且我们网站运行的时候也不想访问根目录下的这个文件,而是要访问其他文件夹下的某一个文件,比如网站运行的时候 ...
- jsDoc的使用
nodeJS使用: 直接:npm install jsdoc -g使用:jsdoc [name].js 简介 JsDoc Toolkit 是一款辅助工具,你只需要根据约定在 JavaScript 代码 ...
- C#资源文件管理
1.右键项目点属性; 2.点资源项,添加资源下拉框的添加现在文件,如下图: 3.直接上代码获取并复制到指定文件夹下: private void button1_Click(object sender, ...
- Linux 压缩系列常用命令
tar 命令: http://man.linuxde.net/tar zip 命令: http://man.linuxde.net/zip unzip 命令: http://man.linuxde.n ...
- .net学习笔记---webconfig的读与写
System.ConfigurationManager类用于对配置文件的读取.其具有的成员如下: 一.AppSettings AppSetting是最简单的配置节,读写非常简单. 名称 说明 AppS ...
- GBDT原理实例演示 1
考虑一个简单的例子来演示GBDT算法原理 下面是一个二分类问题,1表示可以考虑的相亲对象,0表示不考虑的相亲对象 特征维度有3个维度,分别对象 身高,金钱,颜值 cat dating.txt ...
- 重温WCF之群聊天程序(十)
完成的效果图: 服务器端代码: using System; using System.Collections.Generic; using System.Linq; using System.Serv ...
- Pyqt 音视频播放器
在寻找如何使用Pyqt做一个播放器时首先找到的是openCV2 openCV2 貌似太强大了,各种关于图像处理的事情它都能完成,如 读取摄像头.图像识别.人脸识别. 图像灰度处理 . 播放视频等,强 ...
- C#DataGridView合计处理
网上查了一些关于合计的代码 ,但发现大都都不尽人意,就自己再根据资料改了一下. #region 合计 //调用方法示例 //HeJi heji = null; //heji = new HeJi(la ...