整数坐标的点

时间:2017-02-20 04:02:54

标签: java

  

给定具有中心(0,0)和半径r(整数> 0)的圆,找到圆周上的点数(x,y),使得x和y都是整数。当x ^ 2 + y ^ 2 = r ^ 2时,点(x,y)被认为是在圆周上。

     

输入:单行,即圆的半径。

我无法得到正确答案。例如,如果radius为5,则圆周上应该有12个点,但我得到4个。

我写的代码是:

static int findNumOfIntegerPoints(int radius)
{
    static int count =0;
    for (int x=0; x<=radius; x++)
    {
        for (int y=0; y <=radius; y++)
        {
            if ((x^2)+(y^2) == (radius^2))
            {
                count++;
            }
            continue;
        }

    return count;
}

2 个答案:

答案 0 :(得分:1)

  

给定一个圆心,中心(0,0)和半径r(整数> 0),找到   圆周上的点数(x,y)使得x和y都是   整数。点(x,y)被认为是在圆周上   x ^ 2 + y ^ 2 = r ^ 2.

我修改了你的功能,以便考虑到你忽略的负坐标。我还更正了您的x^2y^2来调用Math.pow(x,2),因为Java ^运算符不是您想要的。

class Circle {
    static int findNumOfIntegerPoints(int radius)
    {
        int count =0;
        for (int x=-radius; x<=radius; x++)
        {
            for (int y=-radius; y <=radius; y++)
            {
                if (Math.pow(x,2)+Math.pow(y,2) == Math.pow(radius,2))
                {
                    count++;
                }
            }

        }
        return count;
    }

    public static void main(String args[]) {
        System.out.println(findNumOfIntegerPoints(5));
    }
}   

答案 1 :(得分:-1)

import java.util.*;

public class coordinates {


public static void main(String[] args) {

    int radius=0;
    Scanner obj=new Scanner(System.in);
    radius=obj.nextInt();
    int points=0;
    for(int x=-radius;x<=radius;x++)
    {
        for(int y=-radius;y<=radius;y++)
    {
    double dist=Math.sqrt(x*x + y*y);

    if(dist==radius)
    {
    points++;
    }
    }
    }
    System.out.println("Total no of integer co-ordinates : "+points);
    obj.close();
}
}