JAVA之编程比赛

        最近在参加编程比赛,于是就练习了一下Java语言,准备参加比赛。

       其实Java在编程竞赛中有三个很大的优点,BigInteger,Bigecimal,String,这三个类分别是高精度整数,高精度浮点数和字符串,Java提供了丰富的成员函数可以调用,接下来我们仔细分析一下。

1.高精度:

     BigInteger  add(BigInteger val) 返回值为(this+val),另外还有subtract() multiply() divide() mod()

     Bigecimal和BigInteger的基本成员函数基本一样,除了没有mod(),但是有pow()函数

//需要将int(double)类型的数据转换成BigInteger(Bigecimal)用到valieOf()函数
int num=12;
BigInteger x=BigInteger.valueOf(num);
double num2=12.23;
BigDecimal y=BigDecimal.valueOf(num2);

2.字符串处理

     最基本的字符串处理就是将其转换为字符数组,这样更利于处理,例如要求输入03:00,这样就可以用字符数组的形式提取其中的具体数字进行计算。

String str;
str.charAt(index);
s.substring(0,4);
char []ch=new char[100];
ch=str.toCharArray();
//拆分字符串
String []ss=s.split(":");
//替换字符串
String s="2009-07-26"
System.out.println(s.replace('-'.'//'))
//String中的字符是不能在原位置改变的,要改变必须改变并保存到新的String里,如果需要改变需要用到StringBuffer。

 
 
3.基本的IO 

      JDK 1.5.0 新增的Scanner类为输入提供了良好的基础。

Scanner cin=new Scanner(System.in);
//用Buffer会稍微加快一下速度
Scanner cin=new Scanner(new BufferedInputStream(System.in));

 
       
       cin下有很多的函数,可以自己查看,较为常用的是: 

while(cin.hasNext()){
        cin.next();
        cin.nextInt();
}
                用DecimalFormat类控制浮点数小数位数

          DecimalFormat f=new DecimalFormat("#.00#");
          //0代表一位数字,#代表除0以外的数字
          double a=12.334;
          int b=102;
          System.out.println(f.format(a));
          //格式化输出
          System.out.printf("%d%10.5f",b,a);
4.Array类

         在java.util包里Arrays类的几个方法可替代C/C++里的memset、qsort/sort 和 bsearch:

                  Arrays.fill();//用值填充

boolean[] a1 = new boolean[15];
java.util.Arrays.fill(a1, true);

            Arrays.sort();

            Array.binarySearch()  

int []a=new int[100];
Arrays.sort(a);

          ArrayList就是动态数组,Array的复杂版本,可以用来增加和减少元素,ArrayList与数组的转换

ArrayList List = new ArrayList(); 
List.Add(1); 
List.Add(2); 
List.Add(3);
Int32[] values = (Int32[])List.ToArray(typeof(Int32));
5.类型转换

      常见的几种转换:

      String->int

//第一种方法
int i = Integer.parseInt([String]); 
把字符串当作X进制数转换成int型 
i = Integer.parseInt([String],[int x]);
//第二种方法
int i = Integer.valueOf(my_str).intValue();
                    int->String

String s = String.valueOf(a);
String s = Integer.toString(a);
//把int型数据转换乘X进制数并转换成string型
String s= Integer.toString(a, x);   
String s = "" + a;
              其他的类型的相互转化类似,可以查看API

6.程序

      一个基本的程序

public class Main{
    public static void main(String[] argc)
      {
                System.out.println("Hello World");
      }
}
        java 是完全面向对象,所以一个程序就是一个类,而对于大多OJ都会要求建立一个Main类以及Main类的一个main函数。楼主一开始做OJ的时候就是因为没有定义Main类而一直没有AC过。

     其实在一般比赛中,Java程序会有额外的时间和空间,而实际上经过实验,在执行计算密集任务的时候Java并不比C/C++慢多少,只是IO操作较慢而已。

     另外定义一个对象数组的时候,一定要每一个都初始化,例如,定义一个Windows类

class Windows{
    Point a;
    Point b;
    public static void main(String []args){
    	Windows []win=new Windows[100];
    	for(int i=0;i<win.length;i++){
    		//这一步非常重要
    		win[i]=new Windows();}
    	}
    }
持续更新中。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值