我最近才开始学java 我要编的
这个程序是要求cosx=x^1/2中x的值
为什么我的程序是死循环~~~~
到底错在哪了~~\
public class ValueCosX { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double tempX,tempY;
double tempR=((Math.PI)/2);
double tempL=0;
double valueX;
boolean temP=true;
while(temP&&tempL<tempR)
{
valueX=((tempR-tempL)/2);
//System.out.println(valueX);
tempX=Math.sqrt(valueX);
//System.out.println(tempX);
tempY=Math.cos(valueX);
//System.out.println(tempY);
if(tempX<tempY-1e-10)
{
tempL=valueX;
System.out.println(tempL);
}
else if(tempX>tempY-1e-10)
{
tempR=valueX;
System.out.println(tempR);
}
else
{
System.out.println(valueX);
temP=false;
}
}
} }
谢谢~~~
这个程序是要求cosx=x^1/2中x的值
为什么我的程序是死循环~~~~
到底错在哪了~~\
public class ValueCosX { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double tempX,tempY;
double tempR=((Math.PI)/2);
double tempL=0;
double valueX;
boolean temP=true;
while(temP&&tempL<tempR)
{
valueX=((tempR-tempL)/2);
//System.out.println(valueX);
tempX=Math.sqrt(valueX);
//System.out.println(tempX);
tempY=Math.cos(valueX);
//System.out.println(tempY);
if(tempX<tempY-1e-10)
{
tempL=valueX;
System.out.println(tempL);
}
else if(tempX>tempY-1e-10)
{
tempR=valueX;
System.out.println(tempR);
}
else
{
System.out.println(valueX);
temP=false;
}
}
} }
谢谢~~~
退出的条件不成立!建议用下面的形式写类似代码!int loop = 10000;
while (....&& 0 < loop--){
....
}
valueX = tempL + ((tempR - tempL) / 2);
原因自己想吧!很简单的!