算法查找给定圆的最小边界矩形未正确评估

时间:2017-10-09 23:18:46

标签: java algorithm

我试图在给定中心的x和y坐标以及半径的大小的情况下找到多个圆的最小边界矩形。

测试输入是:

(1, 1, 2), (2, 2, 0.5), (-1, -3, 2), (5, 2, 1)

这是我的代码:

package com.CocoMac.main;

import java.util.ArrayList;
import java.util.Scanner;

public class Challenge330Easy {
    static double maxx;
    static double maxy;
    static double minx;
    static double miny;

    static ArrayList <double[]> circles = new ArrayList<double[]>();

    static String in = "1,1,2\n2,2,0.5\n-1,-3,2\n5,2,1";
    static String s;

    static Scanner inScan = new Scanner(in);

    public static void main(String[] args) {
        for(int i = 0; inScan.hasNextLine(); i++) {
            s = inScan.nextLine();
            circles.add(i, toDouble(s.split(",")));

        }

        for(int i = 0; i < circles.size(); i++) {
                if(maxx < circles.get(i)[0] + circles.get(i)[2]);
                    maxx = circles.get(i)[0] + circles.get(i)[2];

                if(minx > circles.get(i)[0] - circles.get(i)[2]);
                    minx = circles.get(i)[0] - circles.get(i)[2];

                if(maxy < circles.get(i)[1] + circles.get(i)[2]);
                    maxy = circles.get(i)[1] + circles.get(i)[2];

                if(miny > circles.get(i)[1] - circles.get(i)[2]);
                    miny = circles.get(i)[1] - circles.get(i)[2];

        }

        System.out.print("(" + minx + ", " + miny + ")" + ",");
        System.out.print("(" + minx + ", " + maxy + ")" + ",");
        System.out.print("(" + maxx + ", " + maxy + ")" + ",");
        System.out.print("(" + maxx + ", " + miny + ")");

    }

    public static double[] toDouble(String[] input) {
        double[] output = new double[input.length];
        for(int i = 0; i < input.length; i++) {
            output[i] = Double.parseDouble(input[i]);

        }

        return output;

    }

}

预期输出为:

(-3.000, -5.000), (-3.000, 3.000), (6.000, 3.000), (6.000, -5.000)

但相反,输出是:

(4.0, 1.0),(4.0, 3.0),(6.0, 3.0),(6.0, 1.0)

我已经尝试了我能想到的一切。无论出于何种原因,最终输入是从迭代通过(5,2,1)的最后一个圆圈中找到的最大值,而不是从所有圆圈中找到的最大值,这使我想到在我设置时所使用的条件语句x和y的最大值和最小值可能总是评估为true,但我不知道如何。

如果可以,请告诉我我在这里失踪的内容,或指出我需要学习的方向。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

一个明显的问题:

MockMvcRequestBuilders.fileUpload("/newcontact")

您在 if 条件后添加分号。这终止了声明。这转化为......

MockMvcRequestBuilders.fileUpload("/newContact")
相关问题