成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java? 教程(格式化數(shù)字打印輸出)

rubyshen / 3211人閱讀

格式化數(shù)字打印輸出

之前你已經(jīng)看到使用printprintln方法將字符串打印到標準輸出(System.out),由于所有數(shù)字都可以轉(zhuǎn)換為字符串(你將在本課后面看到),你可以使用這些方法打印出任意的字符串和數(shù)字混合,但是,Java編程語言還有其他方法,可以在包含數(shù)字時對打印輸出進行更多控制。

printf和format方法

java.io包中包含一個PrintStream類,它有兩種格式化方法可用于替換printprintln,這些方法,formatprintf,彼此相同。你一直使用的熟悉的System.out恰好是PrintStream對象,因此你可以在System.out上調(diào)用PrintStream方法,因此,你可以在以前使用printprintln的代碼中的任何位置使用formatprintf,例如:

System.out.format(.....);

這兩個java.io.PrintStream方法的語法是相同的:

public PrintStream format(String format, Object... args)

其中format是一個字符串,用于指定要使用的格式,args是要使用該格式打印的變量列表,一個簡單的例子就是:

System.out.format("The value of " + "the float variable is " +
     "%f, while the value of the " + "integer variable is %d, " +
     "and the string is %s", floatVar, intVar, stringVar); 

第一個參數(shù)format是一個格式字符串,指定如何格式化第二個參數(shù)args中的對象,格式字符串包含純文本和格式說明符,它們是格式化Object... args參數(shù)的特殊字符(符號Object... args稱為可變參數(shù),這意味著參數(shù)的數(shù)量可能會有所不同)。

格式說明符以百分號()開頭,以轉(zhuǎn)換器結(jié)束,轉(zhuǎn)換器是一個字符,指示要格式化的參數(shù)類型,在百分號()和轉(zhuǎn)換器之間,你可以使用可選的標志和說明符,java.util.Formatter中記錄了許多轉(zhuǎn)換器、標志和說明符。

這是一個基本的例子:

int i = 461012;
System.out.format("The value of i is: %d%n", i);

%d指定單個變量是十進制整數(shù),%n是與平臺無關(guān)的換行符,輸出是:

The value of i is: 461012

printf和format方法有重載方法,每個都有一個版本,其語法如下:

public PrintStream format(Locale l, String format, Object... args)

例如,要在法語系統(tǒng)中打印數(shù)字(使用逗號代替浮點數(shù)的英文表示中的小數(shù)位),你將使用:

System.out.format(Locale.FRANCE,
    "The value of the float " + "variable is %f, while the " +
    "value of the integer variable " + "is %d, and the string is %s%n", 
    floatVar, intVar, stringVar);
一個例子

下表列出了表格后面的示例程序TestFormat.java中使用的一些轉(zhuǎn)換器和標志。

轉(zhuǎn)換器 標志 說明
d 十進制整數(shù)
f 浮點數(shù)
n 適合于運行應用程序的平臺的新行字符,你應該始終使用%n,而不是
tB 日期和時間轉(zhuǎn)換 — 特定于語言環(huán)境的月份全名
td, te 日期和時間轉(zhuǎn)換 — 2位數(shù)的月日,td根據(jù)需要有前導零,te沒有
ty, tY 日期和時間轉(zhuǎn)換 — ty = 2位數(shù)年份,tY = 4位數(shù)年份
tl 日期和時間轉(zhuǎn)換 — 12小時制
tM 日期和時間轉(zhuǎn)換 — 2位數(shù)分鐘,必要時帶前導零
tp 日期和時間轉(zhuǎn)換 — 特定于語言環(huán)境的am/pm(小寫)
tm 日期和時間轉(zhuǎn)換 — 2位數(shù)的月份,必要時帶有前導零
tD 日期和時間轉(zhuǎn)換 — 日期為%tm%td%ty
08 寬度為八個字符,必要時帶前導零
+ 包括正負號
, 包含特定于語言環(huán)境的分組字符
- 左對齊..
.3 小數(shù)點后三位
10.3 寬度為十個字符,右對齊,小數(shù)點后三位

以下程序顯示了你可以使用格式進行的一些格式化,輸出顯示在嵌入注釋中的雙引號內(nèi):

import java.util.Calendar;
import java.util.Locale;

public class TestFormat {
    
    public static void main(String[] args) {
      long n = 461012;
      System.out.format("%d%n", n);      //  -->  "461012"
      System.out.format("%08d%n", n);    //  -->  "00461012"
      System.out.format("%+8d%n", n);    //  -->  " +461012"
      System.out.format("%,8d%n", n);    // -->  " 461,012"
      System.out.format("%+,8d%n%n", n); //  -->  "+461,012"
      
      double pi = Math.PI;

      System.out.format("%f%n", pi);       // -->  "3.141593"
      System.out.format("%.3f%n", pi);     // -->  "3.142"
      System.out.format("%10.3f%n", pi);   // -->  "     3.142"
      System.out.format("%-10.3f%n", pi);  // -->  "3.142"
      System.out.format(Locale.FRANCE,
                        "%-10.4f%n%n", pi); // -->  "3,1416"

      Calendar c = Calendar.getInstance();
      System.out.format("%tB %te, %tY%n", c, c, c); // -->  "May 29, 2006"

      System.out.format("%tl:%tM %tp%n", c, c, c);  // -->  "2:34 am"

      System.out.format("%tD%n", c);    // -->  "05/29/06"
    }
}
本節(jié)中的討論僅涵蓋formatprintf方法的基礎(chǔ)知識
DecimalFormat類

你可以使用java.text.DecimalFormat類來控制前導和尾隨零、前綴和后綴、分組(千)分隔符和小數(shù)分隔符的顯示,DecimalFormat在數(shù)字格式化方面提供了極大的靈活性,但它使你的代碼更復雜。

下面的示例通過將模式字符串傳遞給DecimalFormat構(gòu)造函數(shù)來創(chuàng)建DecimalFormat對象myFormatter。然后,myFormatter會調(diào)用DecimalFormatNumberFormat繼承的format()方法 — 它接受double值作為參數(shù),并返回字符串中的格式化數(shù)字:

這是一個示例程序,說明了DecimalFormat的用法:

import java.text.*;

public class DecimalFormatDemo {

   static public void customFormat(String pattern, double value ) {
      DecimalFormat myFormatter = new DecimalFormat(pattern);
      String output = myFormatter.format(value);
      System.out.println(value + "  " + pattern + "  " + output);
   }

   static public void main(String[] args) {

      customFormat("###,###.###", 123456.789);
      customFormat("###.##", 123456.789);
      customFormat("000000.000", 123.78);
      customFormat("$###,###.###", 12345.67);  
   }
}

輸出是:

123456.789  ###,###.###  123,456.789
123456.789  ###.##  123456.79
123.78  000000.000  000123.780
12345.67  $###,###.###  $12,345.67

下表說明了每行輸出。

模式 輸出 說明
123456.789 ###,###.### 123,456.789 井號()表示一個數(shù)字,逗號是分組分隔符的占位符,點是小數(shù)分隔符的占位符。
123456.789 ###.## 123456.79 該值在小數(shù)點右側(cè)有三位數(shù),但該模式只有兩位,format方法通過舍入來處理這個問題。
123.78 000000.000 000123.780 該模式指定前導零和尾隨零,因為使用0字符而不是井號()。
12345.67 $###,###.### $12,345.67 模式中的第一個字符是美元符號($),請注意,它緊接在格式化輸出中最左邊的數(shù)字之前。
上一篇:數(shù)字 下一篇:超越基本算術(shù)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72890.html

相關(guān)文章

  • Java? 教程(目錄)

    Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續(xù)版本中引入的改進。 Java教程是希望使用Java編程語言創(chuàng)建應用程序的程序員的實用指南,其中包括數(shù)百個完整的工作示例和數(shù)十個課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...

    lifesimple 評論0 收藏0
  • Java? 教程(字符串)

    字符串 在Java編程中廣泛使用的字符串是一系列字符,在Java編程語言中,字符串是對象。 Java平臺提供String類來創(chuàng)建和操作字符串。 創(chuàng)建字符串 創(chuàng)建字符串的最直接方法是編寫: String greeting = Hello world!; 在這種情況下,Hello world!是一個字符串文字 — 代碼中的一系列字符,用雙引號括起來,每當它在代碼中遇到字符串文字時,編譯器就會創(chuàng)建一個帶...

    ThreeWords 評論0 收藏0
  • Java? 教程數(shù)字

    數(shù)字 本節(jié)首先討論java.lang包中的Number類,它的子類,以及使用這些類的實例化而不是原始數(shù)字類型的情況。 本節(jié)還介紹了PrintStream和DecimalFormat類,它們提供了編寫格式化數(shù)字輸出的方法。 最后,討論了java.lang中的Math類,它包含數(shù)學函數(shù),以補充語言中內(nèi)置的運算符,該類具有三角函數(shù),指數(shù)函數(shù)等方法。 數(shù)字類 使用數(shù)字時,大多數(shù)時候在代碼中使用基元類型,例...

    Tonny 評論0 收藏0
  • Java學習筆記3-Number,String,StringBuilder類

    摘要:創(chuàng)建字符串教程字符串長度用于獲取有關(guān)對象的信息的方法稱為訪問器方法。類在中被提出,它和之間的最大不同在于的方法不是線程安全的不能同步訪問。然而在應用程序要求線程安全的情況下,則必須使用類。 一般地,當需要使用數(shù)字的時候,我們通常使用內(nèi)置數(shù)據(jù)類型,如:byte、int、long、double 等。 在實際開發(fā)過程中,我們經(jīng)常會遇到需要使用對象,而不是內(nèi)置數(shù)據(jù)類型的情形。為了解決這個問題,...

    pkhope 評論0 收藏0
  • 工具集核心教程 | 第六篇: Freemarker模板引擎入門到進階

    摘要:到目前為止,使用越來越廣泛,不光光只是它強大的生成技術(shù),而且它能夠與進行很好的集成。注意使用數(shù)字范圍來定義集合時無需使用方括號數(shù)字范圍也支持反遞增的數(shù)字范圍如對象對象使用花括號包括中的對之間以英文冒號分隔,多組對之間以英文逗號分隔。 Freemarker的介紹 ??Freemarker 是一款模板引擎,是一種基于模版生成靜態(tài)文件的通用 工具,它是為程序員提供的一個開發(fā)包,或者說是一個類...

    趙連江 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<