1. 程式人生 > >字串轉換為數字程式碼For intput String問題的解決

字串轉換為數字程式碼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 的問題了嗎?可見這是一種解決問題的方法和思路,從根源解決問題,而不是僅僅停留在表面,這讓我想起來麥肯錫方法,分析問題的方法是:界定問題,分析問題,問題排序,問題分析,關鍵分析,歸納總結,溝通交流,自己應該在將這種分析問題的思路應用到工作和實踐中,而不是閉門造車,僅此以上。

@尚拙,願我此生不負,願我終將成人。