ACM中的JAVA(基础)

  众所周知,Java拥有良好的可移植性。无论在软件还是硬件领域,它都得到了广泛的使用,但是任何语言都有其缺陷,Java也不例外,Java运行在Java虚拟机上,因而相比C/C++,运行速度就只能呵呵了。在ACM当中,也极少有使用的Acmer,本文档仅介绍一下ACM当中Java的一些基本的使用,仅供读者参考,限于作者水平,文章中若有错误或不足之处,恳请读者批评指正。

一、输入(Input)与输出(Output)

  1.输入

import java.util.*; // import java.until.Scanner

  2.输出

System.out.print();//输出之后不换行,cout
System.out.println();//输出之后换行,相当于C++中的。cout<< ... <<endl
System.out.printf();//C printf()

  3.代码示例

  UPC1000:A + B Problem

  a) UPC‘s Code

//UPC's code
import java.util.*;
public class Main
{
public static void main (String args[]) throws Exception
{
BufferedReader stdin =new BufferedReader(new InputStreamReader(System.in));
String line = stdin.readLine();
StringTokenizer st = new StringTokenizer(line);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println(a+b);
}
}

 b) YQ_beyond's code

//YQ_beyond's code
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner cin = new Scanner(System.in);
int a = cin.nextInt();
int b = cin.nextInt();
System.out.println(a+b);
cin.close();
}
}

  4.Java 中常用的数据输入输出方式

int n = cin.nextInt();
String str = cin.next();//scanf("%s",str) cin>>str
double dou = cin.nextDouble();
String str = cin.nextline();//gets(str) cin.getline();
BigInteger B_I = cin.nextBigInteger();
BigDecimal B_D = cin.nextBigDecimal();
......

  5.Java输入结束的判断

cin.hasNext(); //判断是否已到文件尾
cin.hasNextInt();
cin.hasNextDouble();

  

二、JAVA测试文件

  像C语言中的freopen,c++中的istream/ostream一样,Java中也有方便的文件API用于ACMer测试。

  Java的文件流对象。

FileInputStream fin = new FileInputStream("datain.txt");
PrintStream fout = new PrintStream("dataout.txt");

  代码示例(POJ1503)

import java.io.*;
import java.math.*;
import java.util.*; public class Main{
public static void main(String [] args) throws FileNotFoundException
{
FileInputStream fin = new FileInputStream("datain.txt");
PrintStream fout = new PrintStream("dataout.txt"); System.setIn(fin);
System.setOut(fout); //Scanner cin = new BufferedInputStream(Systtem.in);
Scanner cin = new Scanner(System.in) BigInteger n;
BigInteger sum = new BigInteger("0"); while(cin.hasNext())
{
n = cin.nextBigInteger();
if(n.compareTo(BigInteger.ZERO) == 0)
break;
sum = sum.add(n);
}
System.out.println("sum");
cin.close();
}
}

  

三、JAVA的进制转换

Integer.toString(a,i);//将a转化成i进制的串
Integer.parseInt(str,x);//把串当成十进制数转化成int型

  代码示例:

import java.io.*;
import java.Scanner.*;
import java.util.*;
import java.text.*; public class Main{
public static void main(String [] args)
{
String str;
Scanner cin = new Scanner(System.in);
int a = cin.nextInt();
for(int i = 2; i <= 16; i++)
{
str = Integer.toString(a,i);//将a转化成i进制的串
System.out.println(str); int b = Integer.parseInt(str,x);//把串当成十进制数转化成int型
System.out.println(b);
}
}
}

  

四、JAVA中的串

  在java中String是可变的,而char[]是不可变的,像C++ STL中的string一样,java的String提供了大量的API。

  代码示例:

import java.io.*;
import java.util.*; public class Main{
public static void main(String [] args)
{
Scanner cin = new Scanner(System.in);
String str = cin.next();
%for(int i = 0; i < ;)
System.out.println(str.charAt(0));
char [] ch;
ch = str.toCharArray();
for(int i = 0; i < ch.length; i++)
ch[i] += 1;
System.out.println(ch);
String st = str.substring(2);
System.out.println(st);
st = str.substring(2,4);
System.out.println(st);
}
}

  

五、JAVA中的高精度

  相比C/C++中需要写大坨的代码来实现高精度四则运算,Java 提供了方便的API。在赛场上,遇到单纯的高精度运算的题目,选择Java现成的API会为其它题目节省时间。Java当中将高精度的数据类型用类进行了封装。

  a) 高精度数据类型所在的包

import java.math.*;
//BigInteger & BigDecimal

  b) 代码示例1

import java.math.*; //高精度数据类型所在的包
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner cin = new Scanner(System.in);
BigInteger a = new BigInteger("0");
BigInteger b = new BigInteger("0"); a = cin.nextBigInteger();
b = cin.nextBigInteger(); System.out.println(a.add(b));
System.out.println(a.subtract(b));
System.out.println(a.multiply(b));
System.out.println(a.divide(b));
System.out.println(a.mod(b));
}
}

  c) 代码示例2(POJ2506)

//POJ 2506
import java.math.*;
import java.util.*; public class Main{
public static void main(String [] args){
BigInteger []a = new BigInteger[255];
a[0] = BigInteger.ONE;
a[1] = BigInteger.ONE;
a[2] = a[0] + a[1];
for(int i = 0; i <= 250; i++)
a[i] = a[i-1].add(a[i-2].add(a.[i-23])); Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
int n = cin.nextInt();
System.out.println(a[n]);
}
cin.close();
}
}

  

ACM-JAVA基础的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  4. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  5. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  9. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. 如何用inno setup打包activex

    需要解决三个问题,运行环境检测与安装,按顺序执行安装,activex注册. 运行环境检测与安装 最开始的方法,百度之后,根据网上的搜索的结果,使用了RegQueryDWordValue(HKLM, ' ...

  2. RCurl getURL()函数做debug

    getURL()函数做获取网页做debug,三步骤 1.首先创建一个对象debugGatherer(),该对象包含三个函数:(update(), value(), reset()); R> de ...

  3. LaTex编译错误

    Error Launching Console Application PDFTeXify ... Command Line: gbk2uni.exe "XXX" Startup ...

  4. MySQL性能分析及explain的使用

    MySQL性能分析及explain用法的知识 1.使用explain语句去查看分析结果 如explain select * from test1 where id=1;会出现:id  selectty ...

  5. O(n)线性筛选n以内的素数

    O(n)线性筛选n以内的素数 (1)对于任何一个素数p,都不可能表示为两个数的乘积 (2)对于任何一个合数m = p1a1p2a2…pmam,这里p1< p2 < … <pm,都能使 ...

  6. 【iCore3 双核心板_FPGA】实验二十七:基于SDRAM的TFT驱动器的设计

    实验指导书及代码包下载: http://pan.baidu.com/s/1c2dZihE

  7. 树莓派+移动硬盘搭建NAS服务器

    由于树莓派的USB接口不足以给移动硬盘供电,因此需要另外给移动硬盘提供电源. 显示当前已有的存储设备 # fdisk -l Disk /dev/mmcblk0: 7876 MB, 7876902912 ...

  8. [转载] Win7KB3146706补丁导致蓝屏0x0000006B的修复方案

    进入winpe,将附件的蓝屏6B修复补丁kb3146706.zip的补丁替换windows/system32下面的ci.dll文件,里面有64和32位系统的,替换了文件就可以进入系统了. 启动进入系统 ...

  9. Nginx中FastCGI配置优化

    FastCGI: FastCGI是从CGI发展改进而来的.传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器 ...

  10. SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束

    CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...