如题,刚开始用循环直接求了根号,后来模拟了内置函数sqrt求取
主要使用二分法,均已经运行可以出结果
直接上代码:
第一个:

package test; 

 import java.util.Scanner; 

 public class xy 

 { 

 public static void main(String[] args) 

 { 

 System.out.println("请输入您的整数"); 

 Scanner sc=new Scanner(System.in); 

 double a=sc.nextInt(); 

 double b=0;double c=a; 

 for(double i=(a+b)/2;;)//a大b小 

 { 

 if(((i 
i-a)>=-0.00001 && (ii-a)<=0.00001) ||((a-i 
i) <=0.00001 &&(a-ii)>=-0.00001) )//相差小过0.0001 

 { 

 System.out.println(a+"取根号的结果是"+i); 

 break; 

 } 

 else if((i 
i-a)>=0.00001) //i值大
 {
 c=i;
 i=(b+c)/2;
 }
 else
 {
 b=i;
 i=(b+c)/2;
 }
 }
 }
 }


第二个:

package test;
 import java.util.Scanner;
 public class test
 {
 public static void main(String[] args)
 {
 System.out.println("输入你的要求取的值和次方数");
 Scanner sc=new Scanner(System.in);
 double shu=sc.nextDouble();//值
 int a=sc.nextInt();//几次方
 double temp=shu;
 sqrt(shu,temp,a,0);
 }
 public static double power(double shu ,int ji)//求shu的ji次方
 {
 if(ji<=0)
 return 1;
 else if(ji==1)
 return shu;
 else
 return shupower(shu,ji-1); 

 } 

 public static double sqrt(double shu ,double temp,int ji,double a) 

 //a小数shu大数ji几次方 

 { 

 if(shu<0&&ji%2==0) { System.out.println("输入错误"); return 0; } else if(power((shu+a)/2,ji)-temp<=0.0000001 && power((shu+a)/2,ji)-temp>=-0.0000001) 

 { 

 System.out.println(temp+"开"+ji+"次方的值为"+(shu+a)/2); 

 return 1; 

 } 

 else if(power((shu+a)/2,ji)-temp>0.0000001) 

 { 

 shu=(shu+a)/2; 

 return sqrt(shu,temp,ji,a); 

 } 

 else 

 { 

 a=(shu+a)/2; 

 return sqrt(shu,temp,ji,a); 

 } 

 }
 }