国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何在 Java 中將 String 轉(zhuǎn)換為 int?

這篇具有很好參考價(jià)值的文章主要介紹了如何在 Java 中將 String 轉(zhuǎn)換為 int?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

問:

如何將 String 轉(zhuǎn)換為 int?

"1234"1234

答1:

huntsbot.com – 高效賺錢,自由工作

String myString = "1234";
int foo = Integer.parseInt(myString);

如果您查看 Java documentation,您會注意到“捕獲”是此函數(shù)可以拋出一個 NumberFormatException,您可以處理它:

int foo;
try {
   foo = Integer.parseInt(myString);
}
catch (NumberFormatException e) {
   foo = 0;
}

(此處理將格式錯誤的數(shù)字默認(rèn)為 0,但您可以根據(jù)需要執(zhí)行其他操作。)

或者,您可以使用 Guava 庫中的 Ints 方法,該方法與 Java 8 的 Optional 結(jié)合使用,是一種將字符串轉(zhuǎn)換為 int 的強(qiáng)大而簡潔的方法:

import com.google.common.primitives.Ints;

int foo = Optional.ofNullable(myString)
 .map(Ints::tryParse)
 .orElse(0)

除了捕獲 NumberFormatException 之外,用戶還應(yīng)該注意他們傳入的字符串的長度;如果它們的長度足以溢出整數(shù),則可能要考慮使用 Long::parseLong 代替。

它完美地工作。謝謝!

答2:

huntsbot.com – 高效賺錢,自由工作

例如,這里有兩種方法:

Integer x = Integer.valueOf(str);
// or
int y = Integer.parseInt(str);

這些方法之間存在細(xì)微差別:

valueOf 返回一個新的或緩存的 java.lang.Integer 實(shí)例

parseInt 返回原始 int。

所有情況都相同:Short.valueOf/parseShort、Long.valueOf/parseLong 等。

有關(guān)這兩種方法的區(qū)別,請參見this question

valueOf 方法只是 return valueOf(parseInt(string));

答3:

HuntsBot周刊–不定時(shí)分享成功產(chǎn)品案例,學(xué)習(xí)他們?nèi)绾纬晒⒆约旱母睒I(yè)–huntsbot.com

嗯,需要考慮的一個非常重要的點(diǎn)是整數(shù)解析器會拋出 NumberFormatException,如 Javadoc 中所述。

int foo;
String StringThatCouldBeANumberOrNot = "26263Hello"; //will throw exception
String StringThatCouldBeANumberOrNot2 = "26263"; //will not throw exception
try {
      foo = Integer.parseInt(StringThatCouldBeANumberOrNot);
} catch (NumberFormatException e) {
      //Will Throw exception!
      //do something! anything to handle the exception.
}

try {
      foo = Integer.parseInt(StringThatCouldBeANumberOrNot2);
} catch (NumberFormatException e) {
      //No problem this time, but still it is good practice to care about exceptions.
      //Never trust user input :)
      //Do something! Anything to handle the exception.
}

在嘗試從拆分參數(shù)獲取整數(shù)值或動態(tài)解析某些內(nèi)容時(shí),處理此異常很重要。

如何解析“26263Hello”?在那種情況下我想提取 26263

@user463035818 - 請參閱 docs.oracle.com/javase/8/docs/api/java/util/regex/… - "([0-9]+)" 的正則表達(dá)式模式將“捕獲”一個或多個數(shù)字從 1 到 9 的第一個序列。查看該包中的 Matcher 類。

答4:

huntsbot.com – 高效賺錢,自由工作

手動執(zhí)行:

public static int strToInt(String str){
    int i = 0;
    int num = 0;
    boolean isNeg = false;

    // Check for negative sign; if it's there, set the isNeg flag
    if (str.charAt(0) == '-') {
        isNeg = true;
        i = 1;
    }

    // Process each character of the string;
    while( i < str.length()) {
        num *= 10;
        num += str.charAt(i++) - '0'; // Minus the ASCII code of '0' to get the value of the charAt(i++).
    }

    if (isNeg)
        num = -num;
    return num;
}

huntsbot.com – 程序員副業(yè)首選,一站式外包任務(wù)、遠(yuǎn)程工作、創(chuàng)意產(chǎn)品分享訂閱平臺。

如果輸入大于 2^32 怎么辦?如果輸入包含非數(shù)字字符怎么辦?

程序員在加入勞動力隊(duì)伍時(shí)必須學(xué)習(xí)的一件事,如果不是以前的話,就是永遠(yuǎn)不要重新發(fā)明輪子。這可能是一個有趣的練習(xí),但如果你在商業(yè)環(huán)境中做這種事情,不要指望你的代碼能通過代碼審查。

@yohm 這些是特殊情況;您可以處理 long 和一些正則表達(dá)式;但是,到那時(shí)您可以使用 parseInt。

-1 抱歉,但這是一個非常糟糕的算法,有很多限制,沒有錯誤處理,還有一些奇怪的異常(例如,“”給出異常,“-”將產(chǎn)生 0,“+”產(chǎn)生 -5)。為什么有人會選擇這個而不是 Integer.parseInt(s)? - 我明白這是一個面試問題的意義,但是a)這并不意味著你會這樣做(這是提問者所問的),b)這個答案無論如何都是一個非常糟糕的例子。

-1 因?yàn)槿绻蚁虢馕鲆粋€基數(shù)為 31 的 int 怎么辦? Integer.parseInt(str, 31) 是這樣做的。有點(diǎn)滑稽的評論,但下面是嚴(yán)肅的一點(diǎn)。當(dāng)其他人已經(jīng)投入工作時(shí),切勿重新發(fā)明輪子

答5:

打造屬于自己的副業(yè),開啟自由職業(yè)之旅,從huntsbot.com開始!

另一種解決方案是使用 Apache Commons’ NumberUtils:

int num = NumberUtils.toInt("1234");

Apache 實(shí)用程序很好,因?yàn)槿绻址菬o效的數(shù)字格式,則總是返回 0。因此為您節(jié)省了 try catch 塊。

Apache NumberUtils API Version 3.4

在解析無效數(shù)字時(shí),您很少希望使用 0。

@Ryboflavin 不,不是。其中一個是定義明確的語言語義,另一個是例外

您還可以使用重載方法 NumberUtils.toInt(String, int); 指定自己的默認(rèn)值

答6:

huntsbot.com洞察每一個產(chǎn)品背后的需求與收益,從而捕獲靈感

整數(shù)解碼

您也可以使用 public static Integer decode(String nm) throws NumberFormatException。

它也適用于基數(shù) 8 和 16:

// base 10
Integer.parseInt("12");     // 12 - int
Integer.valueOf("12");      // 12 - Integer
Integer.decode("12");       // 12 - Integer
// base 8
// 10 (0,1,...,7,10,11,12)
Integer.parseInt("12", 8);  // 10 - int
Integer.valueOf("12", 8);   // 10 - Integer
Integer.decode("012");      // 10 - Integer
// base 16
// 18 (0,1,...,F,10,11,12)
Integer.parseInt("12",16);  // 18 - int
Integer.valueOf("12",16);   // 18 - Integer
Integer.decode("#12");      // 18 - Integer
Integer.decode("0x12");     // 18 - Integer
Integer.decode("0X12");     // 18 - Integer
// base 2
Integer.parseInt("11",2);   // 3 - int
Integer.valueOf("11",2);    // 3 - Integer

如果您想獲得 int 而不是 Integer,您可以使用:

拆箱:int val = Integer.decode(“12”); intValue(): Integer.decode(“12”).intValue();

答7:

一個優(yōu)秀的自由職業(yè)者,應(yīng)該有對需求敏感和精準(zhǔn)需求捕獲的能力,而huntsbot.com提供了這個機(jī)會文章來源地址http://www.zghlxwxcb.cn/news/detail-783781.html

目前我正在為大學(xué)做作業(yè),我不能使用某些表達(dá)式,例如上面的那些,通過查看 ASCII 表,我設(shè)法做到了。這是一個復(fù)雜得多的代碼,但它可以幫助像我一樣受到限制的其他人。

首先要做的是接收輸入,在這種情況下是一串?dāng)?shù)字;我將其稱為 String number,在這種情況下,我將使用數(shù)字 12 來舉例說明,因此 String number = “12”;

另一個限制是我不能使用重復(fù)循環(huán),因此也不能使用 for 循環(huán)(本來是完美的)。這限制了我們一點(diǎn),但話又說回來,這就是目標(biāo)。由于我只需要兩位數(shù)(取最后兩位數(shù)),一個簡單的charAt解決了它:

 // Obtaining the integer values of the char 1 and 2 in ASCII
 int semilastdigitASCII = number.charAt(number.length() - 2);
 int lastdigitASCII = number.charAt(number.length() - 1);

有了代碼,我們只需要查看表格,并進(jìn)行必要的調(diào)整:

 double semilastdigit = semilastdigitASCII - 48;  // A quick look, and -48 is the key
 double lastdigit = lastdigitASCII - 48;

現(xiàn)在,為什么要加倍?好吧,因?yàn)橐粋€非?!捌婀帧钡牟襟E。目前我們有兩個雙精度數(shù),1 和 2,但我們需要將其變成 12,我們無法進(jìn)行任何數(shù)學(xué)運(yùn)算。

我們以 2/10 = 0.2 的方式將后者(lastdigit)除以 10(因此為什么要加倍),如下所示:

 lastdigit = lastdigit / 10;

這只是在玩數(shù)字。我們把最后一位數(shù)字變成了小數(shù)。但是現(xiàn)在,看看會發(fā)生什么:

 double jointdigits = semilastdigit + lastdigit; // 1.0 + 0.2 = 1.2

無需過多研究數(shù)學(xué),我們只是將數(shù)字的位數(shù)隔離開來。你看,因?yàn)槲覀冎豢紤] 0-9,除以 10 的倍數(shù)就像創(chuàng)建一個“盒子”來存儲它(回想一下你一年級的老師向你解釋什么是單位和一百)。所以:

 int finalnumber = (int) (jointdigits*10); // Be sure to use parentheses "()"

你去吧??紤]到以下限制,您將數(shù)字字符串(在本例中為兩位數(shù))轉(zhuǎn)換為由這兩位數(shù)組成的整數(shù):

沒有重復(fù)循環(huán)

沒有“魔術(shù)”表達(dá)式,例如 parseInt

目前尚不清楚這個答案試圖解決什么樣的問題,首先,為什么任何人都應(yīng)該有你描述的那個限制,其次,為什么你必須查看一個 ASCII 表,因?yàn)槟憧梢院唵蔚厥褂?'0' 而不是 { 2} 并且永遠(yuǎn)不必?fù)?dān)心它的實(shí)際數(shù)值。第三,帶有 double 值的整個繞道根本沒有意義,因?yàn)槟允缓笤俪艘允?。結(jié)果簡直就是semilastdigit * 10 + lastdigit,正如小學(xué)所學(xué)的那樣,當(dāng)時(shí)引入了十進(jìn)制系統(tǒng)......

答8:

huntsbot.com – 高效賺錢,自由工作

這樣做的方法:

Integer.parseInt(s) Integer.parseInt(s, radix) Integer.parseInt(s, beginIndex, endIndex, radix) Integer.parseUnsignedInt(s) Integer.parseUnsignedInt(s, radix) Integer.parseUnsignedInt(s, beginIndex, endIndex, radix) Integer.valueOf(s) Integer.valueOf(s, radix) Integer.decode(s) NumberUtils.toInt(s) NumberUtils.toInt(s, defaultValue)

Integer.valueOf 生成一個 Integer 對象,所有其他方法生成一個原始 int。

最后兩種方法來自 commons-lang3 和一篇關(guān)于轉(zhuǎn)換 here 的大文章。

答9:

huntsbot.com精選全球7大洲遠(yuǎn)程工作機(jī)會,涵蓋各領(lǐng)域,幫助想要遠(yuǎn)程工作的數(shù)字游民們能更精準(zhǔn)、更高效的找到對方。

每當(dāng)給定的 String 不包含 Integer 的可能性很小時(shí),您就必須處理這種特殊情況。遺憾的是,標(biāo)準(zhǔn) Java 方法 Integer::parseInt 和 Integer::valueOf 會拋出 NumberFormatException 來表示這種特殊情況。因此,您必須使用異常來進(jìn)行流控制,這通常被認(rèn)為是糟糕的編碼風(fēng)格。

在我看來,這種特殊情況應(yīng)該通過返回一個空的 Optional 來處理。由于 Java 不提供這樣的方法,因此我使用以下包裝器:

private Optional tryParseInteger(String string) {
    try {
        return Optional.of(Integer.valueOf(string));
    } catch (NumberFormatException e) {
        return Optional.empty();
    }
}

示例用法:

// prints "12"
System.out.println(tryParseInteger("12").map(i -> i.toString()).orElse("invalid"));
// prints "-1"
System.out.println(tryParseInteger("-1").map(i -> i.toString()).orElse("invalid"));
// prints "invalid"
System.out.println(tryParseInteger("ab").map(i -> i.toString()).orElse("invalid"));

雖然這仍然在內(nèi)部使用異常進(jìn)行流控制,但使用代碼變得非常干凈。此外,您可以清楚地區(qū)分 -1 被解析為有效值的情況和無法解析無效字符串的情況。

答10:

打造屬于自己的副業(yè),開啟自由職業(yè)之旅,從huntsbot.com開始!

使用 Integer.parseInt(yourString)。

記住以下幾點(diǎn):

Integer.parseInt(“1”); // 好的

Integer.parseInt(“-1”); // 好的

Integer.parseInt(“+1”); // 好的

Integer.parseInt(" 1"); // 異常(空格)

Integer.parseInt(“2147483648”); // 異常(整數(shù)限制為 2,147,483,647 的 maximum value)

Integer.parseInt(“1.1”); // 異常(. 或 , 或任何不允許的)

Integer.parseInt(“”); // 異常(不是 0 什么的)

只有一種類型的異常:NumberFormatException

答11:

huntsbot.com – 程序員副業(yè)首選,一站式外包任務(wù)、遠(yuǎn)程工作、創(chuàng)意產(chǎn)品分享訂閱平臺。

將字符串轉(zhuǎn)換為 int 比僅轉(zhuǎn)換數(shù)字更復(fù)雜。您考慮過以下問題:

字符串是否只包含數(shù)字 0-9?

字符串之前或之后的 -/+ 是怎么回事?這可能嗎(指會計(jì)數(shù)字)?

MAX_-/MIN_INFINITY 怎么了?如果字符串是 999999999999999999999 會發(fā)生什么?機(jī)器可以將此字符串視為 int 嗎?

原文鏈接:https://www.huntsbot.com/qa/OdnY/how-do-i-convert-a-string-to-an-int-in-java?lang=zh_CN&from=csdn

一個優(yōu)秀的自由職業(yè)者,應(yīng)該有對需求敏感和精準(zhǔn)需求捕獲的能力,而huntsbot.com提供了這個機(jī)會

到了這里,關(guān)于如何在 Java 中將 String 轉(zhuǎn)換為 int?的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java中byte[]類型如何轉(zhuǎn)換為String類型

    在 Java 中將 byte[] 類型轉(zhuǎn)換為 String 類型,可以使用 String 的構(gòu)造函數(shù)或者靜態(tài)方法。 使用 String 構(gòu)造函數(shù) byte[] byteArray = {97, 98, 99}; String str = new String(byteArray); ? ? ?2.使用靜態(tài)方法 valueOf() byte[] byteArray = {97, 98, 99}; String str = String.valueOf(byteArray); 需要注意的是,在轉(zhuǎn)換過程中需

    2024年02月12日
    瀏覽(26)
  • int char[] String 轉(zhuǎn)換

    int num String s = Integer.toString(num); char[] c = s.toCharArray() Integer.parseInt(new String(c))

    2024年01月22日
    瀏覽(30)
  • JAVA中int與string相互轉(zhuǎn)化的幾種方法

    1、String.valueOf(int i) 2、Integer.toString(int i) 3、i + “”; //i 為 int類型,int+string型就是先將int型的i轉(zhuǎn)為string然后跟上后面的空string。 三種方法效率排序?yàn)椋?Integer.toString(int i) String.valueOf(int i) i+“” 1、Integer.parseInt(String)方法 parseInt()是Integer包裝類里的一個方法,可以將字符串解

    2023年04月23日
    瀏覽(29)
  • C++中將數(shù)字轉(zhuǎn)換成string的方法匯總

    在C++中,將數(shù)字轉(zhuǎn)換成字符串的方法有多種,以下是一些常用的方法: std::to_string()函數(shù) : 使用C++標(biāo)準(zhǔn)庫中的? std::to_string() ?函數(shù),可以將整數(shù)、浮點(diǎn)數(shù)以及其他數(shù)字類型轉(zhuǎn)換為字符串,如前面的示例所示。 使用字符串流(std::ostringstream) : 可以使用? std::ostringstream ?類

    2024年02月08日
    瀏覽(29)
  • 【藍(lán)橋杯備賽Java組】語言基礎(chǔ)|競賽常用庫函數(shù)|輸入輸出|String的使用|常見的數(shù)學(xué)方法|大小寫轉(zhuǎn)換

    【藍(lán)橋杯備賽Java組】語言基礎(chǔ)|競賽常用庫函數(shù)|輸入輸出|String的使用|常見的數(shù)學(xué)方法|大小寫轉(zhuǎn)換

    ???個人主頁:深魚~ ??收錄專欄:藍(lán)橋杯 ??歡迎 ??點(diǎn)贊?評論?收藏 目錄 一、編程基礎(chǔ) 1.1 Java類的創(chuàng)建 ?1.2 Java方法 ?1.3 輸入輸出 ?1.4 String的使用 二、競賽常用庫函數(shù) 1.常見的數(shù)學(xué)方法 2.大小寫轉(zhuǎn)換 前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,

    2024年01月21日
    瀏覽(83)
  • 【藍(lán)橋杯備賽Java組】第一章·語言基礎(chǔ)|競賽常用庫函數(shù)|輸入輸出|String的使用|常見的數(shù)學(xué)方法|大小寫轉(zhuǎn)換

    【藍(lán)橋杯備賽Java組】第一章·語言基礎(chǔ)|競賽常用庫函數(shù)|輸入輸出|String的使用|常見的數(shù)學(xué)方法|大小寫轉(zhuǎn)換

    ???個人主頁:深魚~ ??收錄專欄:藍(lán)橋杯 ??歡迎 ??點(diǎn)贊?評論?收藏 目錄 一、編程基礎(chǔ) 1.1 Java類的創(chuàng)建 ?1.2 Java方法 ?1.3 輸入輸出 ?1.4 String的使用 二、競賽常用庫函數(shù) 1.常見的數(shù)學(xué)方法 2.大小寫轉(zhuǎn)換 前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,

    2024年01月19日
    瀏覽(93)
  • C++中string類型和int類型之間的相互轉(zhuǎn)換【全網(wǎng)最全】

    字符串操作是各種算法題中的???,很多數(shù)據(jù)常常以字符串形式給出,其中有的需要自己轉(zhuǎn)化成整數(shù),而一些整型數(shù)據(jù)有時(shí)轉(zhuǎn)換成字符串處理起來更加方便,比如判斷一個整數(shù)是否是回文數(shù),所以字符串和整數(shù)的轉(zhuǎn)換是一些問題處理的基礎(chǔ)步驟, C++ ?在處理這類問題時(shí)并不像

    2024年02月04日
    瀏覽(25)
  • Java String 轉(zhuǎn)換 List

    每種方法的性能和使用場景如下: split()和Arrays.asList() 性能:這種方法在性能上比較高效,因?yàn)樗苯邮褂昧薐ava標(biāo)準(zhǔn)庫提供的split()方法和Arrays.asList()方法。 使用場景:適用于簡單的字符串分割和去除空格操作,且對性能要求較高的情況。 使用Stream API: 性能:Stream API在處理

    2024年02月04日
    瀏覽(24)
  • Java將集合List轉(zhuǎn)換成String字符串(或String轉(zhuǎn)換成List)

    目錄 1、將集合list轉(zhuǎn)換成string 1.1、使用String.join()方法: ?1.2、使用StringBuilder: ?1.3、使用Java 8的Stream API (推薦): 總結(jié): 2、將string轉(zhuǎn)換成list 2.1、使用String的split()方法: 2.2、?使用Java 8的Stream API的splitAsStream()方法: ?總結(jié): 將一個Java集合List轉(zhuǎn)換為String很簡單,可以使用

    2024年02月02日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包