日期:2014-05-20  浏览次数:20795 次

如何把数据库里的字符类型的取出来+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));