Java 在编写正确的算法时遇到困难

Java 在编写正确的算法时遇到困难,java,algorithm,loops,arraylist,Java,Algorithm,Loops,Arraylist,我试图编写一个自定义函数来循环数组列表并比较四边形的四边。每边只需要1对1进行比较,但我似乎无法找出正确的方法来循环它们。我画了一个图表,我附在下面,但我似乎无法实现正确的循环来做我想做的事情。我制作了一个简化版的Bounds类,只用于测试,它使用getSide(1-4)方法获取边1:North、2:East、3:South、4:West。现在我只想打印测试的侧面。i、 e.(1->11,1->11,2->8,2->12…等) 编辑:我忘了提到最小的数字是我试图让我的算法通过的顺序。也可能树不像

我试图编写一个自定义函数来循环数组列表并比较四边形的四边。每边只需要1对1进行比较,但我似乎无法找出正确的方法来循环它们。我画了一个图表,我附在下面,但我似乎无法实现正确的循环来做我想做的事情。我制作了一个简化版的Bounds类,只用于测试,它使用getSide(1-4)方法获取边1:North、2:East、3:South、4:West。现在我只想打印测试的侧面。i、 e.(1->11,1->11,2->8,2->12…等)

编辑:我忘了提到最小的数字是我试图让我的算法通过的顺序。也可能树不像我希望的那样清晰,线条基本上是向下的,比较四边形的两边和它的对面。第一个顺序是:矩形1:1->7,然后是1->11,然后移动到东侧,将其与西侧进行比较,依此类推,直到它通过所有边

    /* Program I'm using to test my algorithm */
    public static void test()
    {
       BoundTest a,b,c,d,e,f;
       a = new BoundTest("Rectangle 1","A","B","C","D");
       b = new BoundTest("Rectangle 2","E","F","G","H");
       c = new BoundTest("Rectangle 3","I","J","K","L");

       ArrayList<BoundTest> x = new ArrayList();
       x.add(0,a);
       x.add(1,b);
       x.add(2,c);

       System.out.println(x.size());
       for(int i = 0; i <= (x.size() - 2); i++)
       {
          System.out.println(x.get(i).getName());
       }
    }


    /* Bounding Class */
    public class BoundTest 
    {
       private String north,east,south,west,name;

       public BoundTest(String name,String a,String b,String c,String d)
       { 
          this.name = "Name:" + name;
          this.north = "North:" + a;
          this.east = "East: " + b;
          this.south = "South:" + c;
          this.west = "West: " + d;
       }

       /* Get side */
       public String getSide(int a)
       {
          String returnName;

          switch(a)
          {
            case 1:
              returnName = this.north;
               break;
            case 2: 
               returnName = this.east;
               break;
            case 3: 
               returnName = this.south;
                break;
            case 4: 
               returnName = this.west;
                break;
           default:
               returnName = this.north;
               break;
         }
         return returnName;
    }
 }
/*我用来测试算法的程序*/
公共静态无效测试()
{
边界测试a、b、c、d、e、f;
a=新的边界测试(“矩形1”、“a”、“B”、“C”、“D”);
b=新的边界测试(“矩形2”、“E”、“F”、“G”、“H”);
c=新的边界测试(“矩形3”、“I”、“J”、“K”、“L”);
ArrayList x=新的ArrayList();
x、 添加(0,a);
x、 添加(1,b);
x、 添加(2,c);
System.out.println(x.size());

对于(int i=0;我确定这些东西是矩形而不是四边形。矩形应该有两条相等的边。你到底想做什么,比较两条四边形的边?检查什么?为什么是a、b、c、d字符串而不是数字?很难说这是怎么回事。树对应什么?对不起,我想不起来了它们的名字,但你的权利,它们都是不同大小的四边形,或者在实际的实现中。我也更新了我的解释,希望它更有意义。哦,我明白了。你从一个边开始,它有一个值,然后你必须得到除一个外的任何矩形上对边的最小值从第一棵树开始,他从矩形A和北面A开始。这意味着,他必须在矩形B或C的南侧中选择最小的。他选择了7,较小的,所以现在他必须从北面选择矩形A或C。在这种情况下,C是唯一剩下的一个,并且有效。你的问题的标题n的信息非常少。据我所知,你的代码没有显示出要做什么的尝试。我们不会为你编写代码。我仍然不清楚你的树。它们是你想要实现的,还是这个问题也在问这些树是否正确?为什么有四棵树,它们之间的关系如何?