我编了一个小程序想实现输入几个数字,然后对着几个数字进行排序,但是现在有点问题,只能打印第一个数字出来,请大家帮我看看问题在哪里?
import java.util.*;
class add
{
private int[] array;
private int nElam;

public add()
{
array=new int[100];
nElam=0;
}
public void insert(int vlaue)
{
array[nElam]=vlaue;
nElam++;

}
public void display()
{
for(int i=0;i<nElam;i++)
{
 System.out.println(array[i]);
}

}
public void bubblesort()
{

for(int i=nElam-1;i>1;i--)
{
for(int j=0;j<i;j++)
{
     swep(array[j],array[j+1]);
}
}

}
public void swep(int one,int two)
{
int temp=array[one];
array[one]=array[two];
array[two]=temp;

}

    
  
  
}public class java { public static void main(String[] args) {
Vector v=new Vector();

add arr = new add();

            int b =0;
            System.out.println("please inter the number");
try
{
b=System.in.read();
}
            catch(Exception e)
{
             System.out.println(e.getMessage());
             }
            if(b=='\r'||b=='\n')
           return ;
            else
            {
             int num=b-'0';
             v.addElement(new Integer(num));
            }
           int sum=0;
            Enumeration e = v.elements();
            while(e.hasMoreElements())
            {
            Integer tt= (Integer)e.nextElement();
            sum=tt.intValue();
           arr.insert(sum);
            }
            
            arr.bubblesort();
            arr.display();
            
}
}

解决方案 »

  1.   

    这个是显然的,你又没循环,而且System.in.read()只能读一个byte,应该满足不了你的要求
    建议用readLine,用空格分隔各个数字,然后字符串split(" ")
    然后Integer.parseInt()各个字符串,然后排序
      

  2.   

    那我现在改了一下程序,改成了一个循环的读入数据
    import java.util.*;
    class add
    {
    private int[] array;
    private int nElam;

    public add()
    {
    array=new int[100];
    nElam=0;
    }
    public void insert(int vlaue)
    {
    array[nElam]=vlaue;
    nElam++;

    }
    public void display()
    {
    for(int i=0;i<nElam;i++)
    {
     System.out.println(array[i]);
    }

    }
    public void bubblesort()
    {

    for(int i=nElam-1;i>1;i--)
    {
    for(int j=0;j<i;j++)
    {
         swep(array[j],array[j+1]);
    }
    }

    }
    public void swep(int one,int two)
    {
    int temp=array[one];
    array[one]=array[two];
    array[two]=temp;

    }

        
      
      
    }public class java { public static void main(String[] args) {
    Vector v=new Vector();

    add arr = new add();

                int b =0;
                System.out.println("please inter the number");
                while(true)
                {
                 try
    {
    b=System.in.read();
    }
                catch(Exception e)
    {
                 System.out.println(e.getMessage());
                 }
                if(b=='\r'||b=='\n')
               break ;
                else
                {
                 int num=b-'0';
                 v.addElement(new Integer(num));
                }
                }
                
                 int sum=0;
                Enumeration e = v.elements();
                while(e.hasMoreElements())
                {
                Integer tt= (Integer)e.nextElement();
                sum=tt.intValue();
               arr.insert(sum);
                }
                
                arr.bubblesort();
                arr.display();
                
    }
    }但是结果还是不对,输入5819 得到0019  应该是9851啊
      

  3.   

    你用
    BufferedReader b = new BufferedReader(new InputStreamReader(System.in)));
    String s = b.readLine();
    String[] ss= s.split(" ");
    int[] a = new int[ss.length];
    for(int i=0'i<ss.length;i++){
       a[i]=Integer.parseInt(ss[i]);
    }
    然后对a进行排序就可以了!
      

  4.   

    System.in.read()方法只能读取一个byte,你需要循环下
    package thinking;
    class add
    {
            private int[] array;
            private int nElam;        public add()
            {
            array=new int[100];
                    nElam=0;
            }
            public void insert(int vlaue)
            {
                    array[nElam]=vlaue;
                    nElam++;        }
            public void display()
            {
                    for(int i=0;i<nElam;i++)
                            {
                             System.out.println(array[i]);
                            }        }
            public void bubblesort()
            {                for(int i=nElam-1;i>1;i--)
                    {
                    for(int j=0;j<i;j++)
                    {
                         swep(array[j],array[j+1]);
                    }
                    }        }
            public void swep(int one,int two)
            {
                    int temp=array[one];
                    array[one]=array[two];
                    array[two]=temp;        }
    }
      

  5.   

    为什么我改了程序后输入一个数要打印一个0,然后将nElam改为1的时候要打出2个0,将nElam改为2的时候要打出3个0,为什么喃?? 谢谢
    import java.util.*;
    class add
    {
    private int [] array;
    private int nElam;

    public add()
    {
        array=new int[100];
    //nElam=0;
    }
    public void insert(int  vlaue)
    {//
    nElam=0;
    array[nElam]=vlaue;
    nElam++;
     System.out.println(array[nElam]);
    }
    public void display()
    {
    for(int i=0;i<nElam;i++)
    {
     System.out.println(array[i]);
    }

    }
    public void bubblesort()
    {

    for(int i=nElam-1;i>0;i--)
    {
        for(int j=0;j<i;j++)
    {
    if(array[j]>array[j+1])
         swep(array[j],array[j+1]);
    }
    }

    }
    public void swep(int one,int two)
    {
    int  temp=array[one];
    array[one]=array[two];
    array[two]=temp;

    }

        
      
      
    }public class java { public static void main(String[] args) {
    Vector v=new Vector();

    add arr = new add();

                int b =0;
                System.out.println("please inter the number");
                while(true)
                {
                 try
    {
    b=System.in.read();
    }
                catch(Exception e)
    {
                 System.out.println(e.getMessage());
                 }
                if(b=='\r'||b=='\n')
               break ;
                else
                {
                 int num=b-'0';
                 v.addElement(new Integer(num));
                }
                }
                
                 int sum=0;
                Enumeration e = v.elements();
                while(e.hasMoreElements())
                {
                Integer tt= (Integer)e.nextElement();
                sum=tt.intValue();
                //System.out.println(sum);
               arr.insert(sum);
                }
                
                arr.bubblesort();
                arr.display();
                
    }
    }