2013-11-11 4 views
1

В одном из моих заданий мне предлагается написать программу для вычисления координат (x, y) точек по кругу радиуса 1.0. Отображение вывода значений y для всех значений х в диапазоне от 1,00 до минус 1,00 с шагом 0,1 и отображения вывода с использованием printf, где все значения x выровнены по вертикали и справа от всех значений x, значения y выровнены по вертикали, как:java математический расчет для координат круга с заданным радиусом 1.00

x1 y1 
1.00 0.00 
0.90 0.44 

Я знаю, как вычислить значения Y, используя теорему Пифагора, но я не знаю, как отобразить каждые х и у значения аккуратно с помощью цикла и его форматирования с printf Ниже это мой код, который у меня есть до сих пор, любая помощь будет принята с благодарностью:

public class PointsOnACircleV1 { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    // TODO code application logic here 

    // // create menu 

    // create title 
    System.out.println("Points on a circle of Radius 1.0"); 

    // create x1 and y1 
    System.out.println("   x1       y1"); 

    // create line 
    System.out.println("_________________________________________________"); 

    // // display x values 

    // loop? 


    // // perform calculation 

    // radius 
    double radius = 1.00; 

    // x value 
    double x = 1.00; 

    // calculate y value 
    double y = Math.pow(radius, 2) - Math.pow(x, 2); 
} 

} 
+0

Ваш 'y' значение не является правильным. Во всяком случае, google для циклов в java ('for' и' while', в этом случае лучше бы было первое) – SJuan76

+0

Вы игнорируете тот факт, что для каждого x (за исключением 2 пунктов, если вы не хотите философствовать, если есть действительно 0 и -0) в круге, дает значения 2 y? – Cruncher

ответ

0
for(int i=100; i>=-100; i-=10) { 
    x = i/100.0; 
    //do stuff 
    System.out.print("\t%.2f\t%.2f", x, y); 
} 

Это должно заставить вас начать. Если вы не понимаете часть в скобках заявления System.out.print, я предлагаю вам посмотреть, что делает System.out.print, посмотрите format specifiers и найдите escape characters. Тогда вы должны быть настроены.

+1

Думаю, здесь вас будут играть представления с плавающей запятой. Я думаю, что цикл от 0 до 19 лучше и сопоставление его с соответствующим значением x. – Cruncher

+0

Или что-то вроде того, как я его отредактировал? – nhgrif

+0

Это действительно хорошо. Но почему не '10, -10 и -1'. с '/ 10.0'. просто возьмите один 0 от всего. Но это одно и то же. +1 – Cruncher

3
public static void main(String[] args) { 

    double radius = 1.00; 
    double x , y ; 

    for (x=-1.0 ; x<=1.0; x+=0.2) { 
     y = Math.sqrt(radius - Math.pow(x,2)) ; 
     System.out.printf("\n" + x +"  "+ y); 
    } 
} 

Код в цикле вы можете настроить их в соответствии с вашими потребностями.

1
public class PointsOnACircleV1 
{ 
    public static void main (String [] args) 
{ 
    double r = 1; //radius initialized to one 

    double x = 1; // x coordinate initialized to one, could be anything 
    double y = 0.0; // y coordinate is dependent so left at 0. 

    //output 
    System.out.println("\tPoints on a Circle of Radius 1.0"); 
    System.out.printf("\t%6s%6s%12s%7s\n", "x1", "y1", "x1", "y2"); 
    System.out.println("--------------------------------------------"); 

    //for loop to decrement values from the initialized x coordinate to the 
    //end of the diameter, radius is 1 so diameter is 2 so 1 to -1. 
    for(x = 1; x >= -1; x -= .1) 
    { 
     y = Math.sqrt(Math.pow(r,2) - Math.pow(x,2)); //pythagorean theorem to achieve y value. 
     System.out.printf("\t%6.2f%7.2f%12.2f%8.2f\n", x, y, x, -y); //output, -y to get values 
     //for the other 1/2 of the circle 
    } 
} 

}

+1

было бы лучше, если бы вы добавили некоторые пояснения по поводу кода (а не просто по строкам, но краткое описание было бы достаточно) – exexzian

Смежные вопросы