A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘 佳 中级黑马   /  2012-11-24 18:33  /  1620 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解释,如何实现abc的排序??弄了一下午了。。。

import java.util.*;
class  Test1
{
        public static void main(String[] args)
        {
                /*

                1.定义三个数,判断是否可以组成三角形,如果可以,判断是什么角的三角形,什么边的三角形?

                */      
                Scanner scan=new Scanner(System.in);
                System.out.println("请输入一个数:");
                int a=scan.nextInt();
                System.out.println("请输入第二个数:");
                int b=scan.nextInt();
                System.out.println("请输入第三个数:");
                int c=scan.nextInt();
                max(a,b,c);
                System.out.println("a="+a+",b="+b+",c="+c);
               
                if (a+b<=c || a+c<=b || b+c<=a)
                {
                        System.out.println("不可以组成三角形");
                }
                else if(a==b&a==c)
                {
                        System.out.println("这是等边三角形");
                }
                else if (b*b + c*c > a*a)
                {
                        System.out.println("这是锐角三角形");
                        System.out.print(a);
                }
                else if (a*a > b*b + c*c)
                {
                        System.out.println("这是钝角三角形");
                }
                else if (a*a == b*b + c*c)
                {
                        System.out.println("这是直角三角形");
                }
               
        public static void max(int a,int b,int c)
        {
                if (a<b)
                {
                        int temp=a;
                        a=b;
                        b=temp;
                        System.out.println(a);
                }       
                if (a<c)
                {
                        int temp=a;
                        a=c;
                        c=temp;
                }
                if (b<c)
                {
                        int temp=b;
                        b=c;
                        c=temp;
                }       
               
        }
       
}


评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 黑马-项泽宇 于 2012-11-24 19:23 编辑

建议可以试一下冒泡排序的思想。两个for来进行检测。(这句话是刚开始回复的,我疏忽了,没有认真看题目,刚开始以为你有一个数组 有很多组数字,建议忽略。)

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
import java.util.*;
class Test1
{
        public static void main(String[] args)
        {
                /*

                1.定义三个数,判断是否可以组成三角形,如果可以,判断是什么角的三角形,什么边的三角形?

                */      
                Scanner scan=new Scanner(System.in);
                System.out.println("请输入一个数:");
                int a=scan.nextInt();
                System.out.println("请输入第二个数:");
                int b=scan.nextInt();
                System.out.println("请输入第三个数:");
                int c=scan.nextInt();
                myCompare(a,b,c);


                if (a+b<=c || a+c<=b || b+c<=a)
                {
                        System.out.println("不可以组成三角形");
                }
                else if(a==b&a==c)
                {
                        System.out.println("这是等边三角形");
                }
                else if (b*b + c*c > a*a)
                {
                        System.out.println("这是锐角三角形");
                        System.out.print(a);
                }
                else if (a*a > b*b + c*c)
                {
                        System.out.println("这是钝角三角形");
                }
                else if (a*a == b*b + c*c)
                {
                        System.out.println("这是直角三角形");
                }
        }

                public static void myCompare(int a,int b,int c) {
                        int[] temp = new int[]{a,b,c};
                        Arrays.sort(temp);
                        for(int x=0;x<temp.length;x++){
                                System.out.println("边"+(x+1)+"长:"+temp[x]);
                        }
                       
                }      
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
严学韦 发表于 2012-11-24 19:02
import java.util.*;
class Test1
{

为什么数组可以,数字不行呢?
回复 使用道具 举报
刚刚又看了下,楼主你忘了边长不能小于0
代码改了下,输入的数字小于0直接抛Runtime异常
import java.util.*;
class Test1
{
        public static void main(String[] args)
        {
                /*

                1.定义三个数,判断是否可以组成三角形,如果可以,判断是什么角的三角形,什么边的三角形?

                */      
                Scanner scan=new Scanner(System.in);
                System.out.println("请输入1个数:");
                int a=scan.nextInt();
                if(a>0)
                        System.out.println("请输入第2个数:");
                else{
                        throw new RuntimeException("边长不能小于0");
                }
                int b=scan.nextInt();
                if(b>0)
                        System.out.println("请输入第3个数:");
                else{
                        throw new RuntimeException("边长不能小于0");
                }
                int c=scan.nextInt();
                if(c>0)
                        myCompare(a,b,c);
                else{
                        throw new RuntimeException("边长不能小于0");
                }



                if (a+b<=c || a+c<=b || b+c<=a)
                {
                        System.out.println("不可以组成三角形");
                }
                else if(a==b&a==c)
                {
                        System.out.println("这是等边三角形");
                }
                else if (b*b + c*c > a*a)
                {
                        System.out.println("这是锐角三角形");
                        System.out.print(a);
                }
                else if (a*a > b*b + c*c)
                {
                        System.out.println("这是钝角三角形");
                }
                else if (a*a == b*b + c*c)
                {
                        System.out.println("这是直角三角形");
                }

        }

                public static void myCompare(int a,int b,int c) {
                        int[] temp = new int[]{a,b,c};
                        Arrays.sort(temp);
                        for(int x=0;x<temp.length;x++){
                                System.out.println("边"+(x+1)+"长:"+temp[x]);
                        }
                       
                }      
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
刘 佳 发表于 2012-11-24 19:06
为什么数组可以,数字不行呢?

我觉得数组方便呀,可以直接调用数组的排序方法
回复 使用道具 举报
孙浩 中级黑马 2012-11-24 19:22:43
7#
本帖最后由 孙浩 于 2012-11-24 19:31 编辑

max()方法中的abc与main方法中的abc是不一样的
这是变量作用域的问题
调用max()后应该返回排序后的三个数

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
import java.util.*;

class  ForJi1
{
public static void main(String[] args)
{
          /*

      1.定义三个数,判断是否可以组成三角形,如果可以,判断是什么角的三角形,什么边的三角形?

      */
         Scanner scan=new Scanner(System.in);
     System.out.println("请输入一个数:");
                int a=scan.nextInt();
     System.out.println("请输入第二个数:");
                int b=scan.nextInt();
     System.out.println("请输入第三个数:");
                int c=scan.nextInt();
   
        int x;

  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;
        }
  System.out.println(a+"  "+b+"  "+c);
        int aa=a*a;
        int bb=b*b;
        int cc=c*c;
        
        if (a+b>c)
        {
        if (a==b&&b==c&&a==c)
        {
                System.out.println("等边三角形");
        }
        else if (a==b||b==c||a==c)
        {
                System.out.println("等腰三角形");
        }
        else if (aa+bb==cc)
        {
                System.out.println("直角三角形");
        }
        else if (aa+bb>cc)
        {
                System.out.println("锐角三角形");
        }
        else if (aa+bb<cc)
        {
                System.out.println("钝角三角形");
        }
        }
        else
        {
                System.out.println("不能构成三角形");
        }
}
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
变量作用域的问题,可以将Max()和判断三角型是哪一类代码也封装到一个函数中。最后在主函数中调用。这样输入的a,b,c是同一个吗??
Max函数也可以简写成这样:
private static int getMax(int a, int b, int c) {
                int t ;
                if (a > b) // 比较
                {
                                t = a;
                }
                else {
                                t = b;
                         }

                if(t < c){
                                t = c;
                                 }
                return t;
                 
        }

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马