zoukankan      html  css  js  c++  java
  • ACM-JAVA基础

      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();
        }
    }
    

      

  • 相关阅读:
    使用Junit等工具进行单元测试
    软件工程学习、问题
    贪吃蛇
    使用Junit工具进行单元测试
    两人组
    软件工程的理解
    使用工具进行单元测试
    对软件工程的理解
    单元测试
    我对软件工程的理解
  • 原文地址:https://www.cnblogs.com/yqbeyond/p/4450689.html
Copyright © 2011-2022 走看看