当前位置: 代码迷 >> Java相关 >> 一个关于ArrayList的问题
  详细解决方案

一个关于ArrayList的问题

热度:326   发布时间:2006-05-18 19:12:00.0
还没学到集合,用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
哦,搞错了一点,思维上有点漏洞
if(sb.charAt(i)>sb.charAt(i+1)&&sb.charAt(i+1)!='0'){ //删除高位较大的数

这一句应该用“>=”

谢谢指教哦,一直很头痛编程上的小BUG


----------------解决方案--------------------------------------------------------

我的也有错误 那就不能输入从小到大的数字 如123456


----------------解决方案--------------------------------------------------------
汗,还是有问题,当高位连续几个相同的数,地位有个较大的数时候输出结果不对,如985559432取4位时候,得重新构思一下了
----------------解决方案--------------------------------------------------------
呵呵,同病相怜阿,继续努力
----------------解决方案--------------------------------------------------------
恩 继续努力`

----------------解决方案--------------------------------------------------------
难道得用穷举法了,仔细思索了一下,具体算法还挺复杂的。。。。
----------------解决方案--------------------------------------------------------
  相关解决方案