簡體   English   中英

在Java中將String轉換為long

[英]converting String into long in java

我無法將String s="45,333"轉換為數字,例如long或double。 誰能幫我解決問題。.當我嘗試運行該代碼時,我添加了模型代碼,其中顯示NumberFormatException ..

public static void main(String args[])
{
long a=85200;
NumberFormat numberFormat=NumberFormat.getNumberInstance();
String s=numberFormat.format(a);
Long l=Long.parseLong(s.toString());
System.out.println("The value:"+s);
System.out.println("The value of long:"+l);
}

考慮使用NumberFormat.parse()方法而不是Long.parseLong()

Long.parseLong()期望String里面沒有任何格式符號。

混合NumberFormatLong.parseLong()不是一個好主意。

NumberFormat可以parseXXX()語言環境(在您的示例中,它使用計算機的默認語言環境),也可以顯式指定格式模式,而Number子類的parseXXX()方法僅讀取“普通”數字(可選的負號+數字)。

如果你用它的格式NumberFormat ,你應該使用NumberFormat.parse()來解析回來。 但是,您不應依賴默認語言環境,而應嘗試指定一個默認語言環境(或將DecimalFormat與模式結合使用)。 否則,您可能會遇到一些令人討厭且難以發現的錯誤。

如果您不關心格式,請考慮使用Long.toString()將long值轉換為字符串,並使用Long.parseLong()將其轉換回。 它更易於使用,線程安全(與NumberFormat不同),並且在任何地方都相同。

如前所述,您可以像這樣使用NumberFormat.parse()

public static void main(String args[]) {
    long a=85200;
    NumberFormat numberFormat=NumberFormat.getNumberInstance();
    String s=numberFormat.format(a);
    Long l;
    try {
        l = numberFormat.parse(s.toString()).longValue();
    } catch (ParseException ex) {
        l = 0L;
        // Handle exception
    }
    System.out.println("The value:"+s);
    System.out.println("The value of long:"+l);
}
long l = Long.valueOf(s);
System.out.println("The value of long:"+l);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM