2014-10-30 1 views
0

он должен рассчитать ось y, затем нарисовать небольшой сегмент линии каждый раз в другом месте и создать силуэт булавки для боулинга. значение x никогда не изменяется, поэтому он ничего не рисует. черный заполненный круг находится там, чтобы убедиться, что он на самом деле рисует.StdDraw.line() loop - для создания силуэта булавки для боулинга

import java.util.Scanner; 
 
public class test{ 
 
    public static void main(String args[]) 
 
    { 
 
    double a0 = 1.27731344; 
 
    double a1 = .85418707; 
 
    double a2 = .032282353; 
 
    double a3 = .127018447; 
 
    double a4 = (-5.1957538)*(Math.pow(10,-2)); 
 
    double a5 = (6.718114)*(Math.pow(10,-3)); 
 
    double a6 = (-3.61828)*(Math.pow(10,-4)); 
 
    double a7 = (7.025)*(Math.pow(10,-6)); 
 
    
 
    for(int i=0;i<=150;i++){ 
 
     for(double x=0;x<=1;x+=(1/150)){ 
 
     double x2 = x + (1/150); 
 
     double y = Math.sqrt((a0)+(a1*x)+(a2*x)+(a3*x)+(a4*x)+(a5*x)+(a6*x)+(a7*x)); 
 
     StdDraw.line(x,y,x2,y); 
 
     System.out.println(x+" "+y+" "+x2); 
 
     } 
 
     
 
    }StdDraw.filledCircle(.5,.5,.25); 
 
} 
 
}

ответ

0

Линия: for(double x = 0; x <= 1; x += (1/150)) итерацию, начиная с 0.0, заканчивающийся на 1,0, а при добавлении 0,0 х после каждой итерации.

Для увеличения й на 1/150, вы должны изменить 1/150 к двойному значению 1.0/150

Так цикл изменяется в for(double x = 0; x <= 1; x += (1.0/150))

Итерации удваивается, однако, очень плохая практика, из-за того, как с плавающим номера точек могут вести себя. Например, следующий код:

double var = 1.7; 
var -= 0.1; 
System.out.println(var); 

может напечатать что-то вроде 1.6000007. Подробнее об этом читайте в другом сообщении here.

Вы должны найти альтернативный способ расчета ваших расчетов. Суть заключается в следующем: всегда перебирать числа без плавающей запятой.

+0

Спасибо, много помогли, и я должен рассчитать этот путь для задания. – graeme

+0

@graeme Если вы считаете, что этот ответ решил вашу проблему, пожалуйста, отметьте этот ответ как решение (знак ok рядом с сообщением) :) –

+0

У меня есть еще один вопрос. другая часть задания. Мне нужно создать цикл, который создает все возможные 5-символьные пароли. heres, что у меня есть, но я не думаю, что он создает все пароли. char c1 = '0'; char c2 = '0'; char c3 = '0'; char c4 = '0'; char c5 = '0'; while (responce == null) { для (c1 = '0'; c1 <= 'Z'; c1 ++) { для (c2 = '0'; c2 <= 'Z'; c2 ++) { для (c3 = '0'; c3 <= 'Z'; c3 ++) { для (c4 = '0'; c4 <= 'Z'; c4 ++) { для (c5 = '0'; c5 <= 'Z' ; c5 ++) { }}}}} password = "" + c1 + c2 + c3 + c4 + c5; – graeme