问题描述
RT:其中这个字符串有可能包含字母,字母也需要自增。。。
解决方案
解决方案二:
lz,能不能说清楚点
解决方案三:
可以把字符串转成字符数组。再一个个加减,再转成字符串Stringss="123adbc";char[]ca=ss.toCharArray();char[]cap=newchar[ca.length];for(inti=0;i<ca.length;i++){cap[i]=(char)(ca[i]+1);}
解决方案四:
把字符串转换成数组,再调用Arrays.sort();方法应该就可以了。数字,字母就都排好序了升序排序
解决方案五:
只需要考虑一下如何进位,剩下的都是字符串处理
解决方案六:
好比:Strings="A01";可以自动增长为:s="A02"..................s="B99"........;这样类似的,一直增到“Z99”;
解决方案七:
publicclassRun{//甲、乙、丙、丁、戊、己、庚、辛、壬、癸publicstaticfinalint[]skyBranch=newint[]{0,1,2,3,4,5,6,7,8,9};//子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥publicstaticfinalchar[]earthBranch=newchar[]{'a','b','c','d','e','f','g','h','i','j','k','l'};publicstaticvoidmain(String[]args){for(inti=0;i<2020;i++){try{caculate(i);if((i%20)==0){System.out.println("");}else{System.out.print(",");}}catch(RuntimeExceptione){System.out.println("Year"+i+"metexception.");}}}privatestaticvoidcaculate(inti){if(i<4){thrownewIllegalArgumentException("Thestartingyearmustbegreaterthan4");}intrealYear=i-4;System.out.print("year"+i+"=["+skyBranch[realYear%10]+"]["+earthBranch[realYear%12]+"]");}}
类似这个干支纪年法,随便改一改就OK了
解决方案八:
我写了两个版本的例子,第一个版本是我心目中字符串自增应该实现的基本功能,但是输出并不完全符合你的要求【A99的后面是A9A,A9B】,但是可以供你参考,以实现出更复杂的功能来。第二个版本能够满足你的要求,可以稍微改动一下把屏幕输出的值保存到一个列表中,然后就可以用循环等办法取得下一个值了。packagetopics_390910834;publicclassStringIncrement1{publicstaticvoidmain(String[]args){char[]exclusionList=newchar['A'-'9'-1];for(charcc='9'+1;cc<'A';cc++){exclusionList[cc-'9'-1]=cc;}//System.out.println(exclusionList);for(Stringss="A01";!(ss.equals("Z99"));ss=increment(ss,'0','Z',exclusionList)){System.out.println(ss);}}/***让一串字符串自增**@paraminputString*输入的字符串*@paramstartChar*开始字符,比如字符0*@paramendChar*结束字符,比如字符Z*@paramexclusionList*除外列表,比如字符9和字符A之间的[:;<=>?]*@return输出的字符串*/publicstaticStringincrement(StringinputString,charstartChar,charendChar,char[]exclusionList){char[]inputCharArray=inputString.toCharArray();booleancarryFlag=false;for(intii=inputCharArray.length-1;ii>0;ii--){if(inputCharArray[ii]==endChar){inputCharArray[ii]=startChar;carryFlag=true;}else{if(ii==inputCharArray.length-1||carryFlag){do{inputCharArray[ii]++;}while(exclusionList[0]<=inputCharArray[ii]&&inputCharArray[ii]<=exclusionList[exclusionList.length-1]);}}}returnString.valueOf(inputCharArray);}}
packagetopics_390910834;publicclassStringIncrement2{publicstaticvoidmain(String[]args){for(charcc='A';cc<='Z';cc++){for(intii=1;ii<=99;ii++){System.out.printf("%s%02dn",cc,ii);}}}}
解决方案九:
只是简化的例子,输入数据由调用方确保是正常值如果需要通用一些的话,至少需要判断是否为null以及长度是否为0,还需要考虑添加一些异常的处理
解决方案十:
挺好玩的,给你写了个类publicclassStringBizzare{//CODEforafinalprivateintBEGIN_CODE=97;finalprivateintEND_CODE=122;finalprivateintLENGTH=26;finalprivateStringDEFAULT="a00";privateintcurrantIndex;privateintcurrantNumber;publicStringBizzare(Stringbizzare)throwsException{if(bizzare==null||bizzare.isEmpty()){parse(DEFAULT);}else{parse(bizzare);}}privatevoidparse(Stringbizzare)throwsException{if(bizzare==null||bizzare.isEmpty()){thrownewException("Emptystring,WTF!");}charfirstChar=bizzare.charAt(0);if(firstChar<BEGIN_CODE||firstChar>END_CODE){thrownewException("Invalidstring,WTF!");}try{currantNumber=Integer.parseInt(bizzare.substring(1));}catch(Exceptionex){thrownewException("Invalidstring,WTF!");}currantIndex=firstChar-BEGIN_CODE;}privateStringcompose(){charc=(char)(currantIndex+BEGIN_CODE);Stringn=String.valueOf(currantNumber);returnc+(n.length()==1?"0"+n:n);}publicStringincrement(intcount){currantNumber+=count%100;currantIndex+=count/100%LENGTH;returncompose();}@OverridepublicStringtoString(){returncompose();}publicstaticvoidmain(String[]args)throwsException{System.out.println(newStringBizzare(null));System.out.println(newStringBizzare("b05").increment(105));System.out.println(newStringBizzare("b05").increment(-102));}}