分析思路:java
(1)遍歷整個字符串,要用到for(int i = 0;i<str.length;i++){};數組
(2)由於數字串有多長預先並不知道,會不斷加長數字串,因此要用StringBuffer。StringBuffer對象的內容能夠修改;而String對象一旦產生後就不能夠被修改,從新賦值實際上是兩個對象。app
(3)一個用來存儲以找到的最長數字串,另外一個用例存儲當前正在處理中的字符串,兩者要比較出來誰更長。spa
(4)數字串長度值做爲標誌位,要始終保持 數字串長度值 和 數字串 的同步變化。code
import java.util.Scanner; public class Test1{ public static int findMaxString(String inString){ int nowStringLength = 0; StringBuffer nowStringBuffer = null; int maxStringLength = 0; StringBuffer maxStringBuffer = null; for(int i =0;i<inString.length();i++){ if(inString.charAt(i)>=48&&inString.charAt(i)<=57){//char爲字符型,實際上也是一種整數類型,16位無符號整數類型。所以能夠直接與數值比較大小,加減乘除 if(nowStringLength==0){//須要判斷nowStringLength是否等於0,若是等於0,說明nowStringBuffer爲null,須要初始化 nowStringBuffer = new StringBuffer(inString.valueOf(inString.charAt(i))); nowStringLength++; }else{//nowStringLength不等於0,說明此時nowStringBuffer不爲null,無需初始化,直接append(char)便可繼續添加連續的數字 nowStringBuffer.append(inString.charAt(i)); nowStringLength++;//StringLength做爲標誌位,保持與StringBuffer的同步變化 } if(nowStringLength>maxStringLength){//每處理一個字符,將歷史最長值與當前連續最長值進行比較 maxStringLength = nowStringLength; maxStringBuffer = nowStringBuffer; } }else{ nowStringLength = 0; nowStringBuffer = null; } } System.out.println(maxStringBuffer); return maxStringLength; } public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()){
String inString = sc.nextLine();
System.out.println(findMaxString(inString));
}
}
}
主要方法:對象
(1)StringBufferblog
初始化 StringBuffer sb = null;索引
sb = new StringBuffer(String變量);字符串
方法 append(char變量),在StringBuffer末尾添加一個字符同步
(2)String
方法 length(),返回字符串長度,有多少個字符
charAt(index),返回該索引所對應的字符,相似於數組
valueOf(基本數據類型/對象),返回String
valueOf(char[] data),將 char 數組 data 轉換成字符串
valueOf(char[] data, int offset, int count) ,將 char 數組 data 中 由 data[offset] 開始取 count 個元素 轉換成字符串
(3)Scanner
初始化 Scanner sc = new Scanner(System.in);
方法 nextLine(),將DOS窗口的輸入(以Enter鍵爲界)所有讀入,返回String
hasNextLine(),返回輸入源中是否還有下一行
(4)另外Char能夠直接和ASCII碼比較。
學會了找出字符串中最長的數字串,觸類旁通的,找出其餘ASCII區間的字符串也跳不出以上經常使用的方法。
另外若是要求將字符串中全部的數字串都找出來並要操做,就須要學會利用容器存儲,Java中對應的就是3種集合:set(集)、list(列表)和map(映射)。