Java控制结构
一、求一元二次方程的根
解题思路:
- 一元二次方程的解有两种情况:有根或者无根
- 有根的求根公式:
- 无根的公式:b*b-4ac<0
import javax.swing.JOptionPane;
public class Formula{
public static void main(String[] args){
double a,b,c;
String str;
str=JOptionPane.showInputDialog("请输入a:"); //输入系数a,b,c的值
a=Double.parseDouble(str);
str=JOptionPane.showInputDialog("请输入b:");
b=Double.parseDouble(str);
str=JOptionPane.showInputDialog("请输入c:");
c=Double.parseDouble(str);
double x1=1.0; double x2=1.0; double i=0.0; //变量初始化赋值
i=b*b-4*a*c;
if(i>=0){
x1=((-b)+Math.sqrt(i))/(2*a);
x2=((-b)-Math.sqrt(i))/(2*a);
if(i==0){
System.out.println("方程有唯一根:"+x1);
}
else {
System.out.println("方程的第一个根:"+x1);
System.out.println("方程的第二个根:"+x2);
}
}
else
if(i<0) //如果b*b-4ac小于0,方程无根
System.out.println("此方程无根");
}
}
二、用if 语句判断一个月份属于一年中的哪个季节。
(12,1,2月属于冬天;3,4,5月属于春天;6,7,8月属于夏天;9,10,11月属于秋天)
解题思路:主要是考察条件语句if ……else if……的使用,以及判断条件时注意使用"或||“还是"且&&”
public class Year{
public static void main(String[] args){
int num;
String str;
str=JOptionPane.showInputDialog("输入月份:");
num=Integer.parseInt(str);
System.out.print(num+"月份");
if(num==12||num==1||num==2) System.out.println("是冬天");
else if(num==3||num==4||num==5) System.out.println("是春天");
else if(num==6||num==7||num==8) System.out.println("是夏天");
else if(num==9||num==10||num==11) System.out.println("是秋天");
}
}
使用switch语句改写上面程序
import javax.swing.JOptionPane;
public class Year{
public static void main(String[] args){
int num;
String str;
str=JOptionPane.showInputDialog("输入月份:");
num=Integer.parseInt(str);
System.out.print(num+"月份");
if(num>0&&num<13){
switch(num){
case 12:case 1: case 2:System.out.println("是冬天");break;
case 3: case 4: case 5:System.out.println("是春天");break;
case 6: case 7: case 8:System.out.println("是夏天");break;
case 9: case 10: case 11:System.out.println("是秋天");break;
default:
}
}
}
}
三、求1~100的和
- 使用while语句
public class Addition{
public static void main(String[] args) {
int sum=0,n=1;
while(n<=100) {
sum+=n;
n++;
}
System.out.println("1+2+……+99+100="+sum);
System.out.println("n="+n);
}
}
- 递归方法
public class Addition{
public static int add(int n){
int sum;
if(n==1){ //递归出口
return 1;
}else
sum=n+add(n-1);
return sum;
}
public static void main(String[] args){
System.out.println("1+2+……+99+100="+add(100)); //调用递归函数
}
}
四、求1+1/2+1/3…+1/n的和。
- do-while语句
public class Sum{
public static void main(String[] args) {
public static void main(String[] args){
String str;
int n=0; double sum=0;int i=1;
str=JOptionPane.showInputDialog("请输入n");
n=Integer.parseInt(str);
System.out.println(n);
do{
sum=sum+1.0/i; //注意:整数/整数=整数
i++;
}while(i<=n);
System.out.println("1+1/2+…+1/n="+sum);
}
}