JAVA高手请指教!!!

来源:百度知道 编辑:UC知道 时间:2024/06/29 02:59:01
import javax.swing.JOptionPane;
public class Sele{
public static void main(String args[]){
double x,y=0;
int m;
String str;
final double PI=3.14159;
for(int i=1;i<=3;i++)
{
str=JOptionPane.showInputDialog("请输入一个浮点数");
x=Double.parseDouble(str);
System.out.println("x="+x);
m=(x<0)?1:((x<20)?2:3);
switch(m)
{
case 1:y=Math.abs(x);break;
case 2:y=1;
for(int j=1;j<=x;j++)
y*=j;
break;
case 3:y=Math.log(x);break;
}
System.out.println("y="+y);
}
System.exit(0);
}
}
注:有谁能给我讲解一下这个程序!
我不理解的地方有:String str;
final double PI=3.14159;
m=(x<0)?1:((x<20)?2:3);
switch(m)
{
case1:y=match.abs(x);break;

这个程序挺简单的
String str=JOptionPane.showInputDialog("请输入一个浮点数");
接受了你传入的值
final double PI=3.14159;
因为圆周率是固定的嘛 所以设置 静态的 。不更改
m=(x<0)?1:((x<20)?2:3);
即 x<0的时候 给m赋值0 当0=<x<20的时候给m赋值2 x>=20的时候给m赋值3
如果M为其中的一值即 123中的一种
match.abs(x); 这里写错了把 math.abs把 呵呵
math.log 是 返回(底数是 e)double 值的自然对数。
程序结束。。讲完了。还不懂的话可以M 我 哦

以上代码最关键的地方就在:m=(x<0)?1:((x<20)?2:3),你必须得理解执行完该代码后的效果!x是用户自己输入的,那么输入的值就会有很多种情况,但终究m的取值只会有3种值:1,当x<0时,m的取值为1
2,当0<x<20时,m的取值为2
3,当x>20时,m的取值为3.

再结合Switch语句,当m等于1的时候:就取x的绝对值(match.abs(x)就是取绝对值的意思);当m等于2的时候:就是1*2*3...*10这样的一个循环;当m等于3的时候:就是取X的log值!

最后把y值输出就可以了!

x=Double.parseDouble(str);
就是把你输入的数据变成double型
下面是判断
x<0 则Y=x的绝对值
0<x<20 Y=x的阶乘
x>20 Y=log(x)