还没学到集合,用StringBuffer作了一下灌灌水
//输入一个整数,再由用户输入要删除数的个数,按原来的顺序排只是把要删除的数从中抽出import java.io.*;
class xct{
void output(String str,int n){
StringBuffer sb=new StringBuffer(str);
int i=0;
//int l=sb.length();
while(n!=0){
if(sb.charAt(i)>sb.charAt(i+1)&&sb.charAt(i+1)!='0'){ //删除高位较大的数
sb.deleteCharAt(i);
n--;
}
else
i++;
if(i>=sb.length()-n)break;
}
if(n!=0)sb.delete(i,sb.length()); //直接删除剩下的数
System.out.println(sb);
}
public static void main(String [] args) throws IOException{
int n;
String numstr;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
do{
System.out.print("请输入一个数 : ");
numstr=br.readLine();
System.out.print("数字长度为 : "+ numstr.length()+"\n请输入要删除数字的位数 : ");
n=Integer.parseInt(br.readLine());
if(n<numstr.length())break;
else System.out.println("所删除位数不能大于数字长度,重新输入!");
}while(true);
xct t=new xct();
t.output(numstr,n);
}
}
[此贴子已经被作者于2006-5-18 19:14:56编辑过]
----------------解决方案--------------------------------------------------------
做出来就好了,恭喜
再接再励
----------------解决方案--------------------------------------------------------
楼下的那个谢谢 又让我学到了新的方法 `
我们也没学到集合 我是自学的 一起努力吧 ``
希望还有别的方法的都来贴!
----------------解决方案--------------------------------------------------------
还有 你的有错误 我还没找出来 只是才试了下
不信你输入65466454
再输入4
你输出的是464
最小的应该是454
----------------解决方案--------------------------------------------------------
QUOTE:
以下是引用shiyide在2006-5-18 21:31:00的发言:
还有 你的有错误 我还没找出来 只是才试了下
不信你输入65466454
再输入4
你输出的是464
最小的应该是454
哦,搞错了一点,思维上有点漏洞还有 你的有错误 我还没找出来 只是才试了下
不信你输入65466454
再输入4
你输出的是464
最小的应该是454
if(sb.charAt(i)>sb.charAt(i+1)&&sb.charAt(i+1)!='0'){ //删除高位较大的数
这一句应该用“>=”
谢谢指教哦,一直很头痛编程上的小BUG
----------------解决方案--------------------------------------------------------
我的也有错误 那就不能输入从小到大的数字 如123456
----------------解决方案--------------------------------------------------------
汗,还是有问题,当高位连续几个相同的数,地位有个较大的数时候输出结果不对,如985559432取4位时候,得重新构思一下了
----------------解决方案--------------------------------------------------------
呵呵,同病相怜阿,继续努力
----------------解决方案--------------------------------------------------------
恩 继续努力`
----------------解决方案--------------------------------------------------------
难道得用穷举法了,仔细思索了一下,具体算法还挺复杂的。。。。
----------------解决方案--------------------------------------------------------