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语法,包括输 ...
随机推荐
- 解决eclipse ctrl+鼠标左键不能用
选择[Window]菜单 Preferences ——>General——>Editors——>Text Editors——>Hyperlinking 把勾都点上,然后确定KE ...
- python基础——单元测试
python基础——单元测试 如果你听说过“测试驱动开发”(TDD:Test-Driven Development),单元测试就不陌生. 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的 ...
- iOS开发--UIDatePicker
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- Linux文件系统(inode、block……)
内容源于<鸟哥的Linux私房菜> 认识 EXT2 文件系统 文件系统的特殊观察与操作 文件系统 superblock,inode,block superblock,inode,block ...
- linux命令**50
1.ls命令 命令格式: ls [选项] [目录名] 命令功能: 列出目标目录中所有的子目录和文件. 常用参数: -a,列出所有文件包括隐藏文件 -l,列出详细信息,文件大小一般以字节大小显示 -h, ...
- 【JAVA多线程安全问题解析】
一.问题的提出 以买票系统为例: class Ticket implements Runnable { public int sum=10; public void run() { while(tru ...
- 新手上路之Hibernate:第一个Hibernate例子
一.Hibernate概述 (一)什么是Hibernate? Hibernate核心内容是ORM(关系对象模型).可以将对象自动的生成数据库中的信息,使得开发更加的面向对象.这样作为程序员就可以使用面 ...
- 【131031】<meta http-equiv=...> 的功能
1.定义语言 格式: 〈meta http-equiv=″Content-Type″ content=″text/html; charset=gb2312″〉 这是META最常见的用法,在制作网页时, ...
- git 创建本地分支,然后推送到服务器上
git checkout -b crm-2.repair-callback.phoneSet git checkout -b crm-2.repair-callback.RepairHis git p ...
- oracle限制ip訪問
我這oracle版本為11.2.0.4,裝的GRID,所以在grid用戶下編輯sqlnet.ora 1.cd /grid/product/11.2.0/network/admin 2.編輯sqlne ...