Java - 两个圆重叠或在里面

标签 java

我的家庭作业有问题,我无法完成最后一部分。我在这里做错了什么?它不会打印“Circle 2 overlaps Circle 1”。或“圆 2 不与圆 1 重叠”。前两种情况会打印出来。这是问题:

编写一个程序(TwoCircles.java),提示用户输入两个圆的圆心坐标和半径,并确定两者之间的几何关系,并据此打印以下消息之一: 1. Circle 1 在 Circle 2 里面。 2. 圆 2 在圆 1 里面。 3. 圆圈 2 与圆圈 1 重叠。 4. Circle 2 不与Circle 1 重叠。

这是我目前的代码:

import java.util.Scanner;
public class TwoCircles {
public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("Enter Circle 1 center x-, y-coordinates, and radius: ");
    double X1 = input.nextDouble();
    double Y1 = input.nextDouble();
    double radius1 = input.nextDouble();
    System.out.print("Enter Circle 2 center x-, y-coordinates, and radius: ");
    double X2 = input.nextDouble();
    double Y2 = input.nextDouble();
    double radius2 = input.nextDouble();    

    double distance = Math.pow((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2), 0.5);

    if (radius2 >= radius1){
        if (distance <= (radius2 - radius1))
            System.out.println("Circle 1 is inside Circle 2.");}
    else if (radius1 >= radius2){
        if (distance <= (radius1 - radius2))
            System.out.println("Circle 2 is inside Circle 1.");}
    else if (distance > (radius1 + radius2)){
        System.out.println("Circle 2 does not overlap Circle 1.");}
    else {
        System.out.println("Circle 2 overlaps Circle 1.");}
    }
}

感谢任何指导

最佳答案

使用以下代码:

import java.util.Scanner;
public class TwoCircles {
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("Enter Circle 1 center x-, y-coordinates, and radius: ");
    double X1 = input.nextDouble();
    double Y1 = input.nextDouble();
    double radius1 = input.nextDouble();
    System.out.print("Enter Circle 2 center x-, y-coordinates, and radius: ");
    double X2 = input.nextDouble();
    double Y2 = input.nextDouble();
    double radius2 = input.nextDouble();    
    double distance = Math.pow((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2), 0.5);
    if (radius2 >= radius1 && distance <= (radius2 - radius1)){
        System.out.println("Circle 1 is inside Circle 2.");
    }
    else if (radius1 >= radius2 && distance <= (radius1 - radius2) ) {
        System.out.println("Circle 2 is inside Circle 1.");
    }
    else if (distance > (radius1 + radius2)){
        System.out.println("Circle 2 does not overlap Circle 1.");
    }
    else {
        System.out.println("Circle 2 overlaps Circle 1.");}
    }
}

您使用的代码的问题在于前两个条件之一:

if(radius1>=radius2) 

else if(radius1<=radius2)

将始终为真,因此代码永远不会达到第三个或第四个条件。实现您正在尝试做的事情的正确方法是将我在上面提供的代码中完成的所有条件合并在一起。 希望这对您有所帮助!

关于Java - 两个圆重叠或在里面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22032342/

相关文章:

java - PSQL异常 : Syntax Error near at or "Entity" - Spring Boot

java - 不同状态同步

java - Lombok Builders 使用反射吗?

java - 过滤器将 ArrayList<object> 添加到 HashMap

java - SpringBoot/spring-kafka 应用程序中的 Autowiring KafkaTemplate 抛出空指针

java - 使用自动名称创建数组?

java - 如何从其他 Controller 调用具有请求 ParameterMap 的方法

java - 执行机器人框架测试套件两次

java - 在 ArrayList 和 LinkedList 上使用归并排序 : Java

java - 计算文本文件中字母的出现次数