如何把数据库里的字符类型的取出来+1之后的结果再存回去
数据库里有id这个字段varchar类型
里面存放 '591-699-999 ' 要求取出来之后+1 成 '591-700-000 ' 到 '591-799-999 '依次类推.
求个java算法 谢谢了.
------解决方案--------------------public String change(String s){
String temp=s.replaceAll( "- ", " ");
int i=Integer.parseint(temp);
++i;
temp=String.valueOf(i);
String s1=temp.subString(0,3)+ "- "temp.subString(3,6)+ "- "+temp.subString(6);
return s1;
}
------解决方案--------------------楼上的好像有问题:
...
int i=Integer.parseint(temp);
....
难道不怕超过范围吗
还有应该是:Integer.parseInt(temp);
------解决方案--------------------可以每三位为一个单元处理。
第一步,将数据库中取出来的字符型值以“-”分割成三个字符段,并转换为三个对应的int值。
假设原字符串中从左到右的三个字段分别转换为数字a,b,c;
第二步,将c+1,并作判断是否进位:如进位,置c为0,并处理b+1,依次对b和c做同样判断和处理。
第三步,将数字a,b,c分别转换成String型,按原来格式用“-”连接后存入数据库。
------解决方案--------------------public class TestAdd {
public static String addOne(String s){
for (int i=s.length()-1;i> =0;i--){
char c=s.charAt(i);
if (c> = '0 '&&c <= '9 '){
c++;
if (c <= '9 '){
return s.substring(0,i)+c+s.substring(i+1,s.length());
}else{
return addOne(s.substring(0,i))+ '0 '+s.substring(i+1,s.length());
}
}
}
return null;
}
public static void main(String[] args) {
System.out.println(addOne( "591-699-999 "));
}
}
注意:上面代码没有考虑异常情况!
------解决方案--------------------String a = "999 ";
java.text.DecimalFormatSymbols dfs = new java.text.DecimalFormatSymbols();
dfs.setGroupingSeparator( '- ');
java.text.DecimalFormat df = new java.text.DecimalFormat( "#,### ",dfs);
long l = df.parse(a).longValue();
System.out.println(l);
System.out.println(df.format(++l));