字串轉換為數字程式碼For intput String問題的解決
在串列埠資料傳輸時,如何將一個串列埠傳輸過來的字串轉化為數字?通過分析數字的特徵來獲得想要的資訊,解決了好久,今天處理了這個問題,寫一點東西。
問題描述:
將一個字串轉化為數字,如String str =“123”;轉化為 int num=123;我的實現程式碼是這個樣子的,
import java.util.Date; public class Demo { public static void main(String []args) { String a="123034";//獲得字串 int newNum=Integer.valueOf( a).intValue();//轉化為數字 System.out.println(newNum); } }
執行結果如下:
然而如果轉化的字串為String a=q12344;則執行結果為:
如果轉化的字串中有空格呢?如String a=" 12244";
這樣的話,For input string :" 12244";這個錯誤困惑我好久,如何解決這個問題呢?
問題分析:
字串轉換為數字是在串列埠傳輸資料中應用到的,因為串列埠傳輸過來的資料為字元型,將其轉換為數字可獲得一些有用資訊,如String str =“123”;轉化為 int num=123,然而轉換的過程中老是出現For input string :" "的錯誤,在網上查了好久,說明是型別轉換錯誤,但沒有找到解決問題的方法。
我的問題是將一個串列埠傳輸過來的字串轉換為數字,那麼,如何轉換呢?
字串是利用String定義的一串字元,如直接賦值:String str = “Hello World”; 構造方法例項化 :String str = new String(“Hello World”);字串的組成有很多種,字母,數字,空格鍵,等等。
如果要求在一個字串中獲得該字串的數字 ,就得除去其中的不是數字的字元,然後顯示剩下的字元,即數字,故而我現在要面對的是給出一個字元,將其中的數字提取出來形成一個新字元,然後在將其轉化為數字。
那麼,轉化就分為兩步,第一步是除去字串中不是數字的字元,形成一個數字形式的字串。第二步,將數字形式的字串轉化為數字,
第一步,一個字串中有很多字元,比如說空格符,字母,數字,等,如何刪除呢?對於一個給定的字元,先判斷有沒有空格符,利用String類中的trim()刪除空格,在API上搜String看到:
然後判斷字串是否為空,若不是,則從字串從前向後遍歷,字串和數字有各自的ASSCL碼,可以判斷通過判斷數字的ASSCL碼,來篩選數字然後將其存入到另一個字串中。
第二步,將獲得的數字字串轉化為數字,利用int newNum=Integer.valueOf( ).intValue();來實現。
問題解決:
public class Demo01 {
public static void main(String[] args) {
String str = "l $%^&*# ove23n ext234 csdn34 23java eye";
str=str.trim();//除去空格符
String str2=""; //定義新字串
if(str != null && !"".equals(str)){//若字串不為空
for(int i=0;i<str.length();i++){//遍歷字串
if(str.charAt(i)>=48 && str.charAt(i)<=57){//提取數字
str2+=str.charAt(i);
}
}
}
int newNum=Integer.valueOf( str2).intValue();//字串和數字型別轉化
System.out.println(newNum);
}
}
結果為:
**
問題反思:
**
現在看來只是一個小問題,僅僅設計到字串和數字的型別轉化問題,那麼·,在為什麼這個問題困惑自己那麼久還是得不到解決?在出現這個問題以後,首先自己找解決For intput String 的問題,得知是型別轉化錯誤,以後一直找解決方法,其實正確應該是找到字串和數字型別轉化的解決方法,而不是執迷於For intput String 的解決,畢竟For intput String 是型別轉化錯誤的一種,找到能夠正確解決數字和字串型別轉化的方法,不也就解決了For intput String 的問題了嗎?可見這是一種解決問題的方法和思路,從根源解決問題,而不是僅僅停留在表面,這讓我想起來麥肯錫方法,分析問題的方法是:界定問題,分析問題,問題排序,問題分析,關鍵分析,歸納總結,溝通交流,自己應該在將這種分析問題的思路應用到工作和實踐中,而不是閉門造車,僅此以上。
@尚拙,願我此生不負,願我終將成人。