回 帖 发 新 帖 刷新版面

主题:帮看看我这个比较3个数的程序

class com
{
    public static int a,b,c,d;

    public void compare(int a,int b)
    {
        while(a<b)
        {c=b;
        b=a;
        a=c;}
    }



}

class a1 extends com
{
  public static void main(String[] args)

  {
    com cons;
    cons=new com();
    cons.a=10;
    cons.b=20;
    cons.c=15;
    cons.d=0;
    compare (a,b);
    compare (a,c);
    compare (b,c);
    System.out.println("oo"+a,b,c);
   }
}



我只想实现3个数的比较,输出的时候是按从大到小的顺序.请各位高手帮我修改修改呀.

回复列表 (共9个回复)

沙发

改了.学JAVA请试着用面向对象的编程方法:
class Com {
  public static void main(String[] args) {
    Com cons = new Com(10, 20, 15);
    cons.output();
  }
  private int[] num = new int[3];
  public Com(int a, int b, int c) {
    num[0] = a; num[1] = b; num[2] = c;
    compare(0, 1); compare(0, 2); compare(1, 2);
  }
  public void output() {
    System.out.println(num[0] + "\t" + num[1] + "\t" + num[2]);
  }
  private void compare(int i1, int i2) {
    if (num[i1] > num[i2]) {
      int temp = num[i1];
      num[i1] = num[i2];
      num[i2] = temp;
    }
  }
}

板凳

class com
{
    public static int a,b,c,d;

    public com compare()
    {        com n=this;
            int a=this.a;
            int b=this.b;
            int c=this.c;
            int x=0;
            if (a<b)
            {x=a;a=b;b=x;}            
            if (a<c)
            {x=a;a=c;c=x;}            
            if (b<c)
            {x=b;b=c;c=x;}
            n.a=a;n.b=b;n.c=c;            
            System.out.println("cc:"+a+" "+b+" "+c);
            System.out.println("lo:"+this.a+" "+this.b+" "+this.c);
            System.out.println("no:"+n.a+" "+n.b+" "+n.c);
            return n;
        }

}

class a1 extends com
{
  public static void main(String[] args)

  {
    com cons=new com();
    cons.a=10;
    cons.b=20;
    cons.c=15;
    cons.d=0;
    cons.compare();
    //compare (a,c);
    //compare (b,c);
    System.out.println("oo:"+cons.a+" "+cons.b+" "+cons.c);
    
   }
}

3 楼

[color=00FF00]看一下我给你编的程序
编译运行过程:
javac Compare.java
java Test num1 num2 num3[/color]

[size=4]class Compare
{
    int x,y,z;
    Compare(int x,int y,int z)
    {
        this.x=x;
        this.y=y;
        this.z=z;
    }
    void numCompare()
    {
        int []a=new int[3];
        a[0]=x;
        a[1]=y;
        a[2]=z;
        for(int i=0;i<a.length-1;i++)
        {
            for(int j=1;j<a.length;j++)
            {
                if(a[i]<a[j])
                {
                    a[i]=a[i]+a[j];
                    a[j]=a[i]-a[j];
                    a[i]=a[i]-a[j];
                }
            }
        }
        for(int k=0;k<a.length;k++)
                {
                    System.out.println(a[k]);
                }
    }
}
class Test
{
    public static void main(String[] args)
    {
        int n=args.length;
        if(n<3)
        {
            System.out.println("运行时附带3个参数是必要的");
        }
        else
        {
            int a1,a2,a3;
            a1=Integer.parseInt(args[0]);
            a2=Integer.parseInt(args[1]);
            a3=Integer.parseInt(args[2]);
            Compare cp=new Compare(a1,a2,a3);
            cp.numCompare();
        }
    }
}[/size]

4 楼

我给你一点提示,可以用这个三目运算符x=()?():()。可以减少很多步骤。

5 楼

冒泡排序,选择排序,插入排序都可以实现。
这是冒泡排序
public class test {
    public static void main(String [] args)
    {
        int [] a{8,5,7};
        int temp;
        
        for(int i=0;i<a.length;i++)
        {
            for(int j=0;j<a.length-i-1;j++)
            {
                if(a[j]<a[j+1])
                {
                    temp = a[j+1];
                    a[j+1] = a[j];
                    a[j] = temp;                
                }
            
            }
        }
        for(int i=0;i<a.length;i++)
          {
              System.out.println(a[i]);
              
          }

6 楼

public class Com {
    Integer a,b,c;    
    public void compare(){
        Integer temp1,temp2,temp3;
        //获得最大值
        temp1 = a>b?(a>c?a:c):(b>c?b:c);
        //第二
        temp2 = a>b?(a>c?(b>c?b:c):a) : (b>c?(a>c?a:c):b);
        //最小
        temp3 = a>b?(b>c?c:b):(a>c?c:a);
        this.a = temp1;
        this.b = temp2;
        this.c = temp3;
    }
}

public class A1 extends Com {
    public static void main(String[] args) {
        
        Com cons = new Com();
        cons.a = 10;
        cons.b = 20;
        cons.c = 15;
        cons.compare();
        
        System.out.println("a = " + cons.a + ",b = " + cons.b + ",c = "+ cons.c );
    }
}

7 楼

import java.io.*;
 class Input{
 int i;
 int j;
 int k; 
 public Input(int a,int b,int c){
 i=a;
 j=b;
 k=c;
 }
 public void Pailie(){
 int t;

 if(i<j)
 {
 t=i;i=j;j=t;
 }
 if(i<k)
 { 
  t=i;i=k;k=t;
 }
 if(j<k)
 {
 t=j;j=k;k=t;
 }
  System.out.println("从大到小排列为:"+i+" "+j+" "+k);  
 }
 }
 
public class pailie{
 public static void main(String args[]){
 String s;
 int a;
 int b;
 int c;
 try
 {BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
  System.out.print("请输入一个数:");
  s=in.readLine(); 
  a=Integer.parseInt(s); 
  System.out.print("请输入另一个数:");
  s=in.readLine();
  b=Integer.parseInt(s); 
  System.out.print("请输入另一个数:");
  s=in.readLine();
  c=Integer.parseInt(s); 
  Input f =new Input(a,b,c);
  f.Bijiao(); 
  }
  catch (Exception e)
  {System.out.println("输入数据有误");
  }
  }
 }

8 楼

compare要通过对象调用  应该是 cons.compare()

你定义的类没有构造方法 

9 楼

public void compare(int a,int b)
    {
        while(a<b)
        {c=b;
        b=a;
        a=c;}
    }
不能交换3个数
只能交换两个数~

我来回复

您尚未登录,请登录后再回复。点此登录或注册