import java.util.Scanner;
public class Bidaxiao
{
public static void main(String[] args)
{
System.out.println("请输入第1位数");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println("请输入第2位数");
int b = sc.nextInt();
System.out.println("请输入第3位数");
int c = sc.nextInt();
System.out.println("请输入第4位数");
int d = sc.nextInt();
System.out.println("请输入第5位数");
int e = sc.nextInt();
int temp = 0;
if(a<b){
temp = a;
a=b;
b=temp;
}
if(a<c){
temp = a;
a=c;
c=temp;
}
if(a<d){
temp = a;
a=d;
d=temp;
}
if(a<e){
temp = a;
a=e;
e=temp;
}
System.out.println(a);
int secmax = 0;
if(b<c){
secmax=b;
b=c;
secmax=c;
}
if(b<d){
secmax=b;
b=d;
secmax=d;
}
if(b<e){
secmax=b;
b=e;
secmax=e;
}
System.out.println(b);
}
}
[img=QQ截图未命名.bmp]
为什么一输入2位相同的最大数,第二大的数输出也是和最大数是一样的,我的代码哪里错了,请帮我改改!!

解决方案 »

  1.   

    int[] arrays = new int[5];
     
     System.out.println("请输入第1位数");
     Scanner sc = new Scanner(System.in);
     arrays[0] = sc.nextInt();
     System.out.println("请输入第2位数");
     arrays[1] = sc.nextInt();
     System.out.println("请输入第3位数");
     arrays[2] = sc.nextInt();
     System.out.println("请输入第4位数");
     arrays[3] = sc.nextInt();
     System.out.println("请输入第5位数");
     arrays[4]= sc.nextInt();
     
     Arrays.sort(arrays);
     System.out.println("最大数: "+arrays[4]);
     System.out.println("第二大数: "+arrays[3]);
      

  2.   

    我看你这样还不如用冒泡排序法,那样更简单明了,一般比较大小在4个数一下的可以用这样的方法
    排序法:先定义个数组然后用for循环中间嵌套一个if语句就可以啦!
      

  3.   


            import java.util.HashSet;
    import java.util.Scanner;
    public class Test { public static void main(String[] args) {
    HashSet arrays = new HashSet(0);//Set可以自动去掉重复的数值,并自动升序排序
    Scanner sc = new Scanner(System.in);         for(int i=0;i<5;i++){
             System.out.println("请输入第"+(i+1)+"位数");
             arrays.add(new Integer(sc.nextInt()));
            }
            
            Object []arr=arrays.toArray();//把Set转成一个数组,以便显示
            System.out.println("最大数: "+arr[arr.length-1]);
            System.out.println("第二大数: "+arr[arr.length-2]);
    }}
      

  4.   

    import java.util.HashSet;
    import java.util.Scanner;
    public class Test {    public static void main(String[] args) {
            HashSet arrays = new HashSet(0);//Set可以自动去掉重复的数值,并自动升序排序
            Scanner sc = new Scanner(System.in);         for(int i=0;i<5;i++){
                System.out.println("请输入第"+(i+1)+"位数");
                arrays.add(new Integer(sc.nextInt()));
            }
           if(arr.length==1){
            System.out.println("最大数:"+arr[arr.length-1]);
            System.out.println("第二大数:所有数都是一样的");
            return;
           }
             System.out.println("最大数: "+arr[arr.length-1]);
            System.out.println("第二大数: "+arr[arr.length-2]);
        }}
      

  5.   

    建议用set完成
    避免重复的数字
    三楼的对于重复数字没有办法处理
      

  6.   

    用set集合做吧, set里面可以避免重复的元素.! 可以满足要求.
     如果LZ非要那样的话..  建议还是先把你所输入的5个数存在数组里做排序,然后取最后一个,倒数第二个跟最大值是否相等,如果相等再往前面找