1. 程式人生 > >JavaSE學習總結(三)——Java語言編程練習、格式化字符與常量

JavaSE學習總結(三)——Java語言編程練習、格式化字符與常量

數據 nts 編程 () 功能 替換 pri stream 第幾天

目錄

  • 一、變量、常量、字面量
  • 二、銀行利率為5%,問存款100美元5年的收益細節?
  • 三、格式化
    • 3.1、printf格式化輸出
    • 3.2、String.format
      • 3.2.1、日期類型
      • 3.2.2、數字類型
  • 四、水仙花數(自冪數)
  • 五、雞兔同籠
  • 六、素數(質數)
  • 七、分享與下載

一、變量、常量、字面量

技術分享圖片
package com.zhangguo.chapter2_3;

/**
 * 1、銀行利率為5%,問存款100美元5年的收益細節?
 *
 */
public class P1 {

    public static void main(String[] args) {
        //變量
        int age=100;
        age=200;
        
        //字面量
        age=age+99;
        System.out.println("Hello Boy!");
        
        //常量,不允許修改的量,final(最終的)
        final double PI=3.14;
        
        System.out.println(PI*5*5);

    }

}
技術分享圖片

二、銀行利率為5%,問存款100美元5年的收益細節?

技術分享圖片
package com.zhangguo.chapter2_3;

/**
 * /**
 * 1、銀行利率為5%,問存款100美元5年的收益細節?
 *
 */
public class P2 {

    public static void main(String[] args) {
        //利率
        final double RATE=0.05;
        //收益與本金
        double total=100;
        
        for (int i = 1; i <=5; i++) {
            total=total*(1+RATE);
            //格式化並輸出
            System.out.println("第"+i+"年:"+String.format("%.2f",total) );
        }
    }

}
技術分享圖片

結果:

技術分享圖片

三、格式化

3.1、printf格式化輸出

語法:public PrintStream printf(String format, Object ... args)

占位符: %[index$][標識]*[最小寬度][.精度]轉換符 。

針對不同數據類型的格式化,占位符的格式將有所裁剪。
% ,占位符的其實字符,若要在占位符內部使用%,則需要寫成 %% 。
[index$] ,位置索引從1開始計算,用於指定對索引相應的實參進行格式化並替換掉該占位符。
[標識] ,用於增強格式化能力,可同時使用多個 [標識] ,但某些標識是不能同時使用的。
[最小寬度] ,用於設置格式化後的字符串最小長度,若使用 [最小寬度] 而無設置 [標識] ,那麽當字符串長度小於最小寬度時,則以左邊補空格的方式湊夠最小寬度。
[.精度] ,對於浮點數類型格式化使用,設置保留小數點後多少位。
轉換符 ,用於指定格式化的樣式,和限制對應入參的數據類型。

轉 換 符

說 明

示 例

%s

字符串類型

"mingrisoft"

%c

字符類型

‘m‘

%b

布爾類型

true

%d

整數類型(十進制)

99

%x

整數類型(十六進制)

FF

%o

整數類型(八進制)

77

%f

浮點類型

99.99

%a

十六進制浮點類型

FF.35AE

%e

指數類型

9.38e+5

%g

通用浮點類型(f和e類型中較短的)

%h

散列碼

%%

百分比類型

%n

換行符

%tx

日期與時間類型(x代表不同的日期與時間轉換符

  
技術分享圖片
package com.zhangguo.chapter2_3;

public class P3 {

    public static void main(String[] args) {
        
        //是將整數a輸出;
        int a=8976;
        System.out.printf("%d\n",a);  

        //是將a以3位整數的形式輸出;
        System.out.printf("%3d\n",a);

        //是將浮點數b輸出;
        double b=87.9856;
        System.out.printf("%f\n",b);

        //是將浮點數a保留兩位輸出;
        System.out.printf("%.2f\n",b);

        //是將浮點數a以4位形式輸出,並且其中小數占兩位。
        System.out.printf("%4.2f\n",b);
        
        System.out.printf("字母a的大寫是:%c %n", ‘A‘);
        System.out.printf("3>7的結果是:%b %n", 3>7);
        System.out.printf("100的一半是:%d %n", 100/2);
        System.out.printf("100的16進制數是:%x %n", 100);
        System.out.printf("100的8進制數是:%o %n", 100);
        System.out.printf("50元的書打8.5折扣是:%f 元%n", 50*0.85);
        System.out.printf("上面價格的16進制數是:%a %n", 50*0.85);
        System.out.printf("上面價格的指數表示:%e %n", 50*0.85);
        System.out.printf("上面價格的指數和浮點數結果的長度較短的是:%g %n", 50*0.85);
        System.out.printf("上面的折扣是%d%% %n", 85);
        System.out.printf("字母A的散列碼是:%h %n", ‘A‘);
    }

}
技術分享圖片

輸出結果:

技術分享圖片

3.2、String.format

方法參數1:public static String format(String format, Object... args)

方法參數2:public static String format(Locale l, String format, Object... args)

3.2.1、日期類型

技術分享圖片
package com.zhangguo.chapter2_3;

import java.util.Date;

public class P3 {

    public static void main(String[] args) {
       //格式化日期
        Date now = new Date();
        String str = String.format("%tF", now); // 2017-03-02
        System.out.println(str);
        
 /*
c,星期六 十月 27 14:21:20 CST 2007
F,2007-10-27
D,10/27/07
r,02:25:51 下午
T,14:28:16
R,14:28
b, 月份簡稱
B, 月份全稱
a, 星期簡稱
A, 星期全稱
C, 年前兩位(不足兩位補零)
y, 年後兩位(不足兩位補零)
j, 當年的第幾天
m, 月份(不足兩位補零)
d, 日期(不足兩位補零)
e, 日期(不足兩位不補零)
H, 24小時制的小時(不足兩位補零)
k, 24小時制的小時(不足兩位不補零)
I, 12小時制的小時(不足兩位補零)
i, 12小時制的小時(不足兩位不補零)
M, 分鐘(不足兩位補零)
S, 秒(不足兩位補零)
L, 毫秒(不足三位補零)
N, 毫秒(不足9位補零)
p, 小寫字母的上午或下午標記,如中文為“下午”,英文為pm
z, 相對於GMT的時區偏移量,如+0800
Z, 時區縮寫,如CST
s, 自1970-1-1 00:00:00起經過的秒數
Q, 自1970-1-1 00:00:00起經過的豪秒
 */
    }

}
技術分享圖片

輸出結果:2017-03-02

3.2.2、數字類型

技術分享圖片
package com.zhangguo.chapter2_3;

import java.util.Date;

public class P3 {

    public static void main(String[] args) {
        /*浮點數*/
        double num = 987.654321;
        System.out.print(String.format("%.2f %n", num)); 
        System.out.print(String.format("%a %n", num)); 
        System.out.print(String.format("%g %n", num));
/*
-,在最小寬度內左對齊,不可以與0標識一起使用。
0,若內容長度不足最小寬度,則在左邊用0來填充。
#,對8進制和16進制,8進制前添加一個0,16進制前添加0x。
+,結果總包含一個+或-號。
空格,正數前加空格,負數前加-號。
,,只用與十進制,每3位數字間用,分隔。
(,若結果為負數,則用括號括住,且不顯示符號。
b,布爾類型,只要實參為非false的布爾類型,均格式化為字符串true,否則為字符串false。
n,平臺獨立的換行符, 也可通過System.getProperty("line.separator")獲取。
f,浮點數型(十進制)。顯示9位有效數字,且會進行四舍五入。如99.99。
a,浮點數型(十六進制)。
e,指數類型。如9.38e+5。
g,浮點數型(比%f,%a長度短些,顯示6位有效數字,且會進行四舍五入)
*/
        
    }

}
技術分享圖片

輸出結果:

技術分享圖片

技術分享圖片
package com.zhangguo.chapter2_3;

import java.util.Date;

public class P3 {

    public static void main(String[] args) {
        String str=null;  
        //$使用,索引  
        str=String.format("格式參數$的使用:%1$d,%2$s", 99,"abc");             
        System.out.println(str);                       
        
        
        int num = 1;
        String str2 = String.format("%04d", num);
        System.out.println(str2);
        /*
-,在最小寬度內左對齊,不可以與0標識一起使用。
0,若內容長度不足最小寬度,則在左邊用0來填充。
#,對8進制和16進制,8進制前添加一個0,16進制前添加0x。
+,結果總包含一個+或-號。
空格,正數前加空格,負數前加-號。
,,只用與十進制,每3位數字間用,分隔。
(,若結果為負數,則用括號括住,且不顯示符號。
b,布爾類型,只要實參為非false的布爾類型,均格式化為字符串true,否則為字符串false。
d,整數類型(十進制)。
x,整數類型(十六進制)。
o,整數類型(八進制)
n,平臺獨立的換行符, 也可通過System.getProperty("line.separator")獲取
         */
    }

} 
技術分享圖片

輸出結果:

技術分享圖片

四、水仙花數(自冪數)

水仙花數是指一個 n 位正整數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153)

水仙花數只是自冪數的一種,嚴格來說三位數的3次冪數才成為水仙花數。
附:其他位數的自冪數名字
一位自冪數:獨身數
兩位自冪數:沒有
三位自冪數:水仙花數
四位自冪數:四葉玫瑰數
五位自冪數:五角星數
六位自冪數:六合數
七位自冪數:北鬥七星數
八位自冪數:八仙數
九位自冪數:九九重陽數
十位自冪數:十全十美數
常見水仙花數
水仙花數又稱阿姆斯特朗數。
三位的水仙花數共有4個:153,370,371,407;
四位的四葉玫瑰數共有3個:1634,8208,9474;
五位的五角星數共有3個:54748,92727,93084;
六位的六合數只有1個:548834;
七位的北鬥七星數共有4個:1741725,4210818,9800817,9926315;
八位的八仙花數共有3個:24678050,24678051,88593477

技術分享圖片
package com.zhangguo.chapter2_3;

/**
 * 水仙花數是指一個 n 位正整數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153)
 */
public class P4 {
    public static void main(String[] args) {
        
        //System.out.println(9875/(int)Math.pow(10, 2)%10);
        
        int ge,shi,bai;
        for (int i = 100; i <=999; i++) {
            ge=i%10;   //個位
            shi=i/10%10;  //十位
            bai=i/100%10; //百位
            
            if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
                System.out.println(i);
            }
        }
    }
}
技術分享圖片

結果

技術分享圖片

五、雞兔同籠

有若幹只雞兔同在一個籠子裏,從上面數,有88個頭,從下面數,有244只腳。問籠中各有多少只雞和兔?(35/94)

技術分享圖片
package com.zhangguo.chapter2_3;

/**
 * 有若幹只雞兔同在一個籠子裏,從上面數,有88個頭,從下面數,有244只腳。問籠中各有多少只雞和兔?(35/94)
 *
 */
public class P5 {

    public static void main(String[] args) {
        //雞 x
        //兔 y
        //x+y==88
        //2*x+4*y==244
        
        for (int x = 1; x <=87; x++) {
            for (int y = 1; y <=87; y++) {
                if(x+y==88&&x*2+y*4==244){
                    System.out.println("雞:"+x+",兔:"+y);
                }
            }
        }

    }

}
技術分享圖片

結果:

技術分享圖片

六、素數(質數)

質數(prime number)又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。

技術分享圖片
package com.zhangguo.chapter2_3;

/**
 * 質數(prime number)又稱素數,有無限個。質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數的數稱為質數。
 *1-1000之間的素數
 */
public class P6 {

    public static void main(String[] args) {
        //樹旗 flag;
        //921
        
        for(int i=2;i<=1000;i++){
        boolean flag=true;  //先假定當前數就是素數
        for (int j = 2; j <=i/2; j++) {
            if(i%j==0){
                flag=false;
                break;
            }
        }
        if(flag)System.out.println(i);
        //System.out.println(i+(flag?"是":"不是"));
        /*
        if(flag){
            System.out.println(i+"是素數");
        }else{
            System.out.println(i+"不是素數");
        }*/

        }
    }

}
技術分享圖片

結果:

技術分享圖片

七、分享與下載

阿裏巴巴Java開發手冊(http://pan.baidu.com/s/1c2mqsEk)

Camtasia_Studio_6.0.2綠色漢化破解版(http://pan.baidu.com/s/1nvjWh1R)

添加打賞功能

JavaSE學習總結(三)——Java語言編程練習、格式化字符與常量