欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

控制语句

程序员文章站 2022-06-15 14:41:50
...

Java语言中有三种程序结构,分别是顺序结构、选择结构和循环结构。

顺序结构的程序按照语句在程序中的物理位置顺序执行,这是一种最基本的结构。

选择结构可以用if 、if-else 和 switch 语句来实现。if 和 if-else 语句都是根据给定的条件决定哪些语句执行,哪些语句不执行。if 语句只能判断一种情况, if-else 可以判断两种情况,如果有更多种情况可以用嵌套的 if 语句,嵌套的 if 语句可以写成 if-else-if 形式,提高程序的清晰性和易读性。

switch 语句也可以实现多种选择判断,但灵活性不如 if 。switch 与 if 的区别在于 if 可以判断无数种情况,而 switch 只可以判断有限种情况。

循环结构有三种程序,分别是 while 、do-while 和 for 。实际编写程序过程中,三中循环可以互相代替,但是有些问题可能用其中的某个循环更合适。for 循环是三种循环中最常用的循环。

循环是根据循环条件来执行的,当给定的条件不成立时,则循环结束。在有些情况下,虽然满足循环条件,但也不想让循环继续执行,这时可以用 break 语句或 continue 语句提前结束循环。break 语句和 continue 语句还可以带标号,可以对程序进行更灵活的控制(在C语言中有 goto 语句,可以实现程序的灵活转向,但随意使用 goto 语句使程序结构混乱,所以在Java语言中摒弃了 goto 语句。但没有 goto 的语言是不完整的语言,有些程序不好实现,所以Java 用带标号的 break 和 continue 替代)。

一、顺序结构

求一元二次方程 ax²+bx=c=0 的根,其中 a≠0 , b²-4ac≥0 .

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		double a,b,c;
		double p,q;
		double x1,x2;
		
		Scanner reader=new Scanner(System.in);
		System.out.println("请输入一元二次方程的三个系数:");
		a=reader.nextDouble();
		b=reader.nextDouble();
		c=reader.nextDouble();
		
		p=-b/(2*a);
		q=Math.sqrt(b*b-4*a*c)/(2*a);
		
		x1=p+q;
		x2=p-q;
		
		System.out.println("一元二次方程的根是:");
		System.out.printf("x1=%.2f,x2=%.2f\n",x1,x2);
	}

}

控制语句


二、选择结构

1. 将三个整数按由小到大的顺序排列并输出。

import java.util.*;
public class Mainn {
	public static void main(String args[])
	{
		int a,b,c,t;
		Scanner reader=new Scanner(System.in);
		
		System.out.println("请输入三个整数:");
		a=reader.nextInt();
		b=reader.nextInt();
		c=reader.nextInt();
		
		if(a>b)
		{
			t=a;
			a=b;
			b=t;
		}
		if(a>c)
		{
			t=a;
			a=c;
			c=t;
		}
		if(b>c)
		{
			t=b;
			b=c;
			c=t;
		}
		
		System.out.println("三个数的由小到大顺序是:");
		System.out.printf("%d %d %d\n",a,b,c);
	}

}
控制语句

2. 改写求一元二次方程根的程序,使得程序能够求解出任何一个一元二次方程的根。

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		double a,b,c;
		double p,q,disc;
		double x1,x2;
		
		Scanner reader=new Scanner(System.in);
		System.out.println("请输入一元二次方程的三个系数:");
		a=reader.nextDouble();
		b=reader.nextDouble();
		c=reader.nextDouble();
		
		disc=b*b-4*a*c;
		p=-b/(2*a);
		q=Math.sqrt(Math.abs(disc))/(2*a);
		
		if(a==0.0)
		{
			System.out.println("二次方的系数为零,不是一个二次方程");
			return ;
		}
		else if(disc>0.0)
		{
			x1=p+q;
			x2=p-q;
			System.out.println("方程有两个不等的实根:");
			System.out.printf("x1=%.2f,x2=%.2f\n",x1,x2);
		}
		else if(disc==0.0)
		{
			x1=x2=p;
			System.out.println("方程有两个相等的实根:");
			System.out.printf("x1=x2=%.2f\n",x1);
		}
		else
		{
			System.out.println("方程有两个复根:");
			System.out.printf("x1=%.2f%+.2fi",p,q);
			System.out.println("");
			System.out.printf("x2=%.2f%+.2fi",p,-q);
			System.out.println("");
		}
	}
}
控制语句

3.将学生的成绩等级转换成对应的百分制成绩。成绩对应关系:A——85~100,B——70~84,C——60~69,D——不合格。编写程序,输入学生的成绩等级,输出对应的百分制成绩。

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		String grade;
		Scanner reader=new Scanner(System.in);
		
		System.out.println("输入学生的成绩等级(A、B、C或D):");
		grade=reader.next();
		
		switch(grade.charAt(0))
		{
		case 'A':System.out.println("百分成绩为:85~100.");break;
		case 'B':System.out.println("百分成绩为:70~84.");break;
		case 'C':System.out.println("百分成绩为:60~69.");break;
		case 'D':System.out.println("成绩不合格。");break;
		default:System.out.println("输入错误。");
		}
	}
}
控制语句

4.给出年月,输出该月天数。

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		int year,month,days;
		Scanner reader=new Scanner(System.in);
		
		System.out.print("请输入年月:");
		year=reader.nextInt();
		month=reader.nextInt();
		
		switch(month)
		{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:days=31;System.out.printf("%d年%d月有%d天。",year,month,days);break;
		case 2:days=28;
		if((year%4==0 && year%100!=0)||(year%400==0))
			days=29;
		System.out.printf("%d年%d月有%d天。",year,month,days);break;
		case 4:
		case 6:
		case 9:
		case 11:days=30;System.out.printf("%d年%d月有%d天。",year,month,days);break;
		default:System.out.println("月份输入错误!");
		}
	}
}

三、循环结构

1. 用下面的多项式计算圆周率的近似值,知道其中某一项的绝对值小于或等于1E-6。

π/4=1-1/3+1/5-1/7+……

import java.util.*;
public class Mainn {
	public static void main(String args[])
	{
		int i=1,sign=1;
		double item,pi=0;
		
		do
		{
			item=sign*1.0/i;
			pi+=item;
			i+=2;
			sign*=-1;
		}while(Math.abs(item)>1.0E-6);
		pi*=4;
		System.out.printf("PI=%.6f\n",pi);
	}
}

控制语句