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语法,包括输 ...
随机推荐
- vs win32 & MFC 指针默认位置
一开始win32指针所在的位置是与debug文件夹同级的.即打开打开改程序的第一个文件夹这一级. MFC指针是在第二个debug下头,就是打开第二个project名词的文件夹下头,e.g., &quo ...
- oracle TIMESTAMP日期相减
select extract(day from inter) * 24 * 60 * 60 + extract(hour from inter) * 60 * 60 + extract(minute ...
- javaWeb四大域对象
servletContext Request HttpSession pageContext 详细参考:http://www.tuicool.com/articles/NJfyMrn
- notifyDataSetInvalidated和notifyDataSetChanged有什么区别
notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容.public void notifyDataSetChang ...
- Android -- startActivityForResult-------&&&----setResult
startActivityForResult与startActivity的不同之处 startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivit ...
- volatile关键字与线程间通信
>>Java内存模型 现在计算机普遍使用多处理器进行运算,并且为了解决计算机存储设备和处理器的运算速度之间巨大的差距,引入了高速缓存作为缓冲,缓存虽然能极大的提高性能,但是随之带来的缓存一 ...
- EXCEL中汉字转大写拼音
最近一直没有什么成系统的学习东西,也就没写什么随笔.昨天晚上,一哥们儿说给弄个输入汉字直接转拼音的程序,问了他几点需求,说你想做个啥的,最后,他说想做个EXCEL的,现在发现EXCEL确实是个好东西啊 ...
- SSIS Dataflow使用存储过程不能检索列名
在项目中遇到一个问题,需要在Dataflow中调用一个存储过程,然后把结果生成一个csv文件. 然而在dataflow调用存储过程中遇到了问题,SP不能正确的返回列名. 在SSMT里面明明是可以查出数 ...
- CentOS下Apache安装SSL
https是一个安全的访问方式,数据在传输过程中是加密的.https基于ssl. 一.安装apache和ssl模块1.安装apacheyum install httpd2.安装ssl模块yum ins ...
- WCF消息拦截,利用消息拦截做身份验证服务
本文参考 http://blog.csdn.net/tcjiaan/article/details/8274493 博客而写 添加对信息处理的类 /// <summary> /// 消 ...