JAVA與ACM

來源:互聯網
上載者:User

標籤:

這兩天學了一下JAVA的文法,還沒有學習後面的核心地方,突然間覺得JAVA這門語言很棒,我要在接下來的時間系統的學習一下。就這麼愉快地決定了。

Java對於大數計算這方面的優勢很大。最重要的是代碼量小了(時間複雜度我有點拿不準)。於是針對這兩天對Java的摸索,寫一篇日誌。記錄一下針對ACM來說常用的Java方面的東西。

1、輸入

首先要想輸入需要先包括:

import java.util.Scanner;

我們需要其中的 Scanner類聲明的對象來掃描控制台輸入。

針對A+B來說:(如果看不懂,請自行翻書,都講得很清楚)

import java.util.Scanner;public class Main //必須寫成Main,否則CE{    public static void main(String [] args)    {        Scanner cin = new Scanner(System.in);//對於Scanner 類聲明對象cin用來掃描控制台輸入        int a = cin.nextInt();        int b = cin.nextInt();        System.out.println(a+b);//輸出a+b        cin.close();    }}

 讀一個整數:  int n = cin.nextInt();       相當於 scanf("%d", &n);  或 cin >> n; 

讀一個字串:String s = cin.next();       相當於 scanf("%s", s);   或 cin >> s;  

讀一個浮點數:double t = cin.nextDouble(); 相當於 scanf("%lf", &t); 或 cin >> t;  

讀一整行:    String s = cin.nextLine();   相當於 gets(s);          或 cin.getline(...); 

讀一個大數:  BigInteger c = cin.nextBigInteger();

如果你想指教輸入一個字元的話,可以這樣:Scanner in = new Scanner(System.in);String str = in.nextLine();char ch = str.charAt(0);System.out.println(ch);

不過需要注意的是它們沒有像scanf一樣有判斷是否輸入到結尾的功能。

這時候需要用一個Scanner類的方法hasnext()來判斷是否輸入到檔案結尾;

import java.math.*;//大數類在Java.math裡面,如果不包括的話聲明不了大數對象import java.util.Scanner;public class Main{    public static void main(String[] args)    {        BigInteger [] a=new BigInteger[255]; //大數數組,動態開數組        a[0]=BigInteger.ONE; //初始化,這裡我現在還沒看懂,我會寫成a[0]=BigInteger.valueOf(1);把1強制轉換成大數類        a[1]=BigInteger.ONE;        a[2]=a[1].add(a[0].add(a[0]));        for(int i=3;i<=250;i++)        {            a[i]=a[i-1].add(a[i-2].add(a[i-2]));        }        Scanner cin = new Scanner(System.in); //輸入開啟                while(cin.hasNext())//判斷是否檔案結束        {            int n=cin.nextInt();            System.out.println(a[n]); //輸出        }        cin .close();//輸入關閉    }} 

2、輸出:

public class Main {    public static void main(String[] args)    {        // TODO Auto-generated method stub                double d;                d=9999.99999;                System.out.format("%f",d);                //9999.999990     沒有斷行符號                System.out.format("%10.10f",d).println(); //9999.9999900000 輸出斷行符號                System.out.format("%.4f",d).println();    //10000.0000      輸出斷行符號                System.out.format("%3.4f",d).println();   //10000.0000        輸出斷行符號                System.out.println(d);                    //輸出當前變數      輸出斷行符號                System.out.println();                     //                輸出斷行符號                System.out.printf("%f",d);                     //9999.999990     沒有斷行符號                System.out.print(d);                      //9999.99999      沒有斷行符號            }}

 

當然,輸出的時候也有對小數位元處理的方法:

0代表當前位向後都是0就輸出0佔位,#代表若當前位向後都是0就不輸出這些位上的數字。

import java.text.DecimalFormat;public class Main {    public static void main(String[] args)  {        double num = 9.999;        DecimalFormat p3 = new DecimalFormat("#.00#");        DecimalFormat p4 = new DecimalFormat("#.000#");        DecimalFormat p5 = new DecimalFormat("#.0000#");        System.out.println(p3.format(num));//輸出9.999        System.out.println(p4.format(num));//輸出9.999        System.out.println(p5.format(num));//輸出9.9990    }}

 

3、高精度

對於大數來說,Java提供了BigDecimal和BigInteger兩個類,都包含在java.math.*裡面。

BigInteger是大整形類,BigDecimal是大浮點型類。

這兩個類產生的對象沒有資料範圍,只要你的電腦記憶體足夠就可以。

下面用BigInteger舉個例子:

import java.math.BigInteger;public class Main {        public static void main(String[] args)        {                int a=6,b=3;                BigInteger x,y,z;                x=BigInteger.valueOf(a);            //轉化賦值                y=BigInteger.valueOf(b);                System.out.println(x.add(y));      //加                System.out.println(x.subtract(y)); //減                System.out.println(x.multiply(y)); //乘                System.out.println(x.divide(y));   //除                System.out.println(x.mod(y));      //取餘    }}

 

4、進位轉換

java一直就是作弊器一般的存在,就像它的進位轉換函式一樣:

public class Main {        public static void main(String[] args)        {        String string;        int a=8;        int x=2;        string = Integer.toString(a, x);    //把int型資料轉轉乘X進位數並轉換成string型        System.out.println(string);                int b = Integer.parseInt(string, x);//把字串當作X進位數轉換成int型        System.out.println(b);    }}

 

5、字串

Java中的String   和char數組是完全不同的兩種東西。

String中的字元是不能在原位置改變的,要改變必須改變並儲存到新的String裡,或者儲存到char 數組裡再修改

import java.io.*;import java.util.*;public class Main{    public static void main(String[] args)     {        Scanner cin = new Scanner (new BufferedInputStream(System.in));        String st = "abcdefg";        System.out.println(st.charAt(0)); // st.charAt(i)就相當於st[i].        char [] ch;        ch = st.toCharArray(); // 字串轉換為字元數組.        for (int i = 0; i < ch.length; i++){            ch[i] += 1;//字元數組可以像C++   一樣操作        }        System.out.println(ch); // 輸入為“bcdefgh”.        st = st.substring(1); // 則從第1位開始copy(開頭為第0位).        System.out.println(st);        st=st.substring(2, 4);  //從第2位copy到第4位(不包括第4位)        System.out.println(st);//輸出“de”    }}

 

JAVA與ACM

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.