Java에서 double 형을 사용하는 간단한 제곱근 계산기를 작성하려면 이진 검색을 사용하고 있습니다. 그러나 주 기능에서 대답을 인쇄하여 코드를 테스트하려고 시도했지만 터미널에 아무 것도 출력되지 않았습니다. 나는 또한 오류를 Possible lossy conversion from double to float
있어 ...... 여기 내 코드입니다 :Java에서 출력물을 출력하지 않습니다.
public class MyMath{
public static double sqrt(double n){
double u = 1;
double l = 0;
float m = (u + l)/2;
double norm_input = 1;
float acc = 0.00000000001;
double answer = 0;
if ((n > 0) && (n < 1)){
if ((m * m) < n){
l = m;
}else{
u = m;
}
answer = (u + l)/2;
return answer;
}else{
int count = 0;
while (n > 1){
n = n/4;
norm_input = norm_input * 2;
count++;
}
while ((u - l) > acc){
if ((m * m) < n){
l = m;
}else{
u = m;
}
}
answer = (u + l)/2 * norm_input;
return answer;
}
}
public static void main(String[] args){
double a = new MyMath().sqrt(4);
System.out.println(a);
}
}
왜 'm'과 'acc'는 부유합니까? 이름을 잘 지정하면 가독성을 높일 수 있습니다. 나는 while 루프가 종료되지 않는 것 같아요. Btw : 이미'Math.sqrt'를 아십니까? – Roland
시작 부분에 하나의 유형 만 사용하고 두 번째 while-loop에서 코드를 디버그하십시오. – Roland
확실히 무한 루프. IDE의 디버거를 사용하는 법을 배워야합니다. 작은 팁'while ((u - l)> acc)'은'u'와'l'이 실제로 값을 변경하지 않으므로 문제가됩니다. – Altoyyr