我试图在给定中心的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,但我不知道如何。
如果可以,请告诉我我在这里失踪的内容,或指出我需要学习的方向。任何帮助表示赞赏!
答案 0 :(得分:1)
一个明显的问题:
MockMvcRequestBuilders.fileUpload("/newcontact")
您在 if 条件后添加分号。这终止了声明。这转化为......
MockMvcRequestBuilders.fileUpload("/newContact")