【JAVA零基礎入門系列】Day7 Java輸入與輸出

  本篇主要介紹Java的輸入與輸出,當然,這裏說的是控制檯下的輸入與輸出,窗口程序的設計將會再後續篇章中有詳細說明。  

  Java的輸出很簡單,調用System.out.println()即可打印輸出你想要輸出的內容。我們之前也已經看到過。調用println()方法時,會自動在後面加上換行符,如果不希望它加換行符的話,就要使用print()方法了,之後的打印輸出會緊跟其後,而不是另起一行。另外,還有一個很常用的方法,那就是printf(),學過C或者C++的話,對這個printf()應該很熟悉,沒錯 ,在Java裏幾乎是一模一樣的。可以用來格式化輸出內容。第一個參數代表格式,格式中會有一個或者多個轉換符,後續參數代表替換內容,用於替換轉換符。說這麼多也沒用,直接上代碼。

複製代碼
package pers.frank.test;

import java.util.Date;

public class Test{

    public static void main(String[] args) {
        /*** 輸出字符串 ***/
        // %s表示輸出字符串,也就是將後面的字符串替換模式中的%s
        System.out.printf("%s", new Integer(1212));
        // %n表示換行
        System.out.printf("%s%n", "end line");
        // 還可以支持多個參數
        System.out.printf("%s = %s%n", "Name", "Zhangsan");
        // %S將字符串以大寫形式輸出
        System.out.printf("%S = %s%n", "Name", "Zhangsan");
        // 支持多個參數時,可以在%s之間插入變量編號,1$表示第一個字符串,3$表示第3個字符串
        System.out.printf("%1$s = %3$s %2$s%n", "Name", "san", "Zhang");

        /*** 輸出boolean類型 ***/
        System.out.printf("true = %b; false = ", true);
        System.out.printf("%b%n", false);

        /*** 輸出整數類型***/
        Integer iObj = 342;
        // %d表示將整數格式化爲10進制整數
        System.out.printf("%d; %d; %d%n", -500, 2343L, iObj);
        // %o表示將整數格式化爲8進制整數
        System.out.printf("%o; %o; %o%n", -500, 2343L, iObj);
        // %x表示將整數格式化爲16進制整數
        System.out.printf("%x; %x; %x%n", -500, 2343L, iObj);
        // %X表示將整數格式化爲16進制整數,並且字母變成大寫形式
        System.out.printf("%X; %X; %X%n", -500, 2343L, iObj);

        /*** 輸出浮點類型***/
        Double dObj = 45.6d;
        // %e表示以科學技術法輸出浮點數
        System.out.printf("%e; %e; %e%n", -756.403f, 7464.232641d, dObj);
        // %E表示以科學技術法輸出浮點數,並且爲大寫形式
        System.out.printf("%E; %E; %E%n", -756.403f, 7464.232641d, dObj);
        // %f表示以十進制格式化輸出浮點數
        System.out.printf("%f; %f; %f%n", -756.403f, 7464.232641d, dObj);
        // 還可以限制小數點後的位數
        System.out.printf("%.1f; %.3f; %f%n", -756.403f, 7464.232641d, dObj);

        /*** 輸出日期類型***/
        // %t表示格式化日期時間類型,%T是時間日期的大寫形式,在%t之後用特定的字母表示不同的輸出格式
        Date date = new Date();
        long dataL = date.getTime();
        // 格式化年月日
        // %t之後用y表示輸出日期的年份(2位數的年,如99)
        // %t之後用m表示輸出日期的月份,%t之後用d表示輸出日期的日號
        System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
        // %t之後用Y表示輸出日期的年份(4位數的年),
        // %t之後用B表示輸出日期的月份的完整名, %t之後用b表示輸出日期的月份的簡稱
        System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);

        // 以下是常見的日期組合
        // %t之後用D表示以 "%tm/%td/%ty"格式化日期
        System.out.printf("%1$tD%n", date);
        //%t之後用F表示以"%tY-%tm-%td"格式化日期
        System.out.printf("%1$tF%n", date);

        /*** 輸出時間類型***/
        // 輸出時分秒
        // %t之後用H表示輸出時間的時(24進制),%t之後用I表示輸出時間的時(12進制),
        // %t之後用M表示輸出時間的分,%t之後用S表示輸出時間的秒
        System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);
        // %t之後用L表示輸出時間的秒中的毫秒
        System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);
        // %t之後p表示輸出時間的上午或下午信息
        System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);

        // 以下是常見的時間組合
        // %t之後用R表示以"%tH:%tM"格式化時間
        System.out.printf("%1$tR%n", date);
        // %t之後用T表示以"%tH:%tM:%tS"格式化時間
        System.out.printf("%1$tT%n", date);
        // %t之後用r表示以"%tI:%tM:%tS %Tp"格式化時間
        System.out.printf("%1$tr%n", date);

        /*** 輸出星期***/
        // %t之後用A表示得到星期幾的全稱
        System.out.printf("%1$tF %1$tA%n", date);
        // %t之後用a表示得到星期幾的簡稱
        System.out.printf("%1$tF %1$ta%n", date);

        // 輸出時間日期的完整信息
        System.out.printf("%1$tc%n", date);
    }
}
複製代碼

  好的,這其實是摘別人的代碼(溜了溜了)。

  

  這裏包括了大部分的輸出格式,多碼幾次的話就會使用了。還是那句話,不需要全記住,只需要有一個概念,知道可以實現這樣的效果,到時候要用了再來查一查也不遲,之後熟能生巧嘛。

  

  String類型中,format方法的用法跟這完全一樣,只是不會輸出到控制檯,而是處理字符串後用於後續代碼中。

  Java裏的輸入也不難,但是比輸出要稍微麻煩一點,需要先構造一個Scanner對象,然後關聯System.in、看代碼:

複製代碼
package pers.frank.test;

import java.util.Scanner;

public class Test{

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("What's your name?");
        String name = in.nextLine();
        System.out.printf("Hello!%s!How old are you?",name);
        int age = in.nextInt();
        System.out.printf("So, you are %d years old.",age);
    }
}
複製代碼

  當調用nextline()方法時,程序會暫停,直到你輸入數據並按下回車鍵。然後把你輸入的那一行數據作爲結果返回。nextline讀入的是一行字符串,而nextInt()方法則期待讀入一個整數。如果輸入的不是一個整數,就會報錯。除了這兩個方法以外,還有next()方法,讀入一個單詞。nextDouble(),讀入一個浮點數,hasNext()判斷輸入中是否還有其他單詞,hasNextInt() hasNextDouble() 判斷釋放還有表示整數或者浮點數。

   除了從控制檯讀取輸入之外,還可以從文件中讀取。

  Scanner in = new Scanner(Path.get("myfile.txt"));

  如果文件名包含反斜槓,則需要在反斜槓之前再加一個額外的反斜槓:“c:\\windows\\text.txt”

  如果文件不存在,則會創建文件,可以像輸出到System.out一樣使用print、println、以及printf方法。

  文件讀寫在之後的栗子中會有詳細介紹,這裏暫不多說。

  至此,本篇內容就結束了,歡迎大家繼續關注!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章