一:复习回顾
语句:
(1)顺序结构
(2)选择结构:if if ...else if else if.. .else
switch case语句:
(3)循环结构:
二:switch case语句:
语法:
switch(表达式)
case 常量变量1: 语句一;
break;
case 常量变量2: 语句二;
break;
case 常量变量3: 语句三;
break;
...
}
解释:
(0)switch()当中的表达式可以是整型( 非 long),字符型。从JDK 7开始,可以使用字符串。表达式的类型要跟常量标号的类型相同。或者是相兼容。
(1)首先会计算表达式的值。
(2)表达式的值会常量标号进行匹配,执行响应的case语句。执行完相应的case语句,需要结束当前的的switch时,使用break关键字。
(3)当表达式的值和任何的常量标号不能批配的时候,默认会执行default语句。
三: 问题
(1)条件运算符和 if ...else 的区别?
条件运算符:就是一个运算符,运算结果必须要返回一个值。
简捷,运行效率比if else高。
if else ...数据处理能力比条件运算符强。
结论:如果能有条件运算符完成的,使用条件运算符完成。
不能使用条件运算符完成的使用if else 执行。
(2)if else 和switch的区别?
switch: 如果判断的具体的数值不多,而且复合非long整形,可以使用Switch。效率也比if else高。
对于一些区间的判断,对结果为boolean类型判断,只能使用if。
四: 循环控制:for while do...while
for循环:
1:语法:
for(表达式1;表达式2;表达式3){
...被重复执行的代码;
}
解释:
表达式一:初始化一个循环变量。
表达式二: 循环条件。能够确定循环的次数。返回的结果是一个boolean类型。
表达式三: 使表达式二趋于false结果。
执行顺序:
(1)先执行表达式一。
(2)执行表达式二:返回一个boolean类型的结果。当结果为true时,执行语句。
(3)执行表达式三:
(4)执行表达式二; 返回一个boolean类型的结果,继续执行语句。再执行表达式三,这样周而复始的执行。
当表达式二的结果为false的时候,结束for循环。
2: 注意事项:
(1) 如果循环体语句只有一句的时候,{}可以省略,不建议大家省略。
3:for循环的变形:
变量的声明:
for(;循环条件;){
//循环语句:
表达式三;
}
4:for的无限死循环形式:
for(;;){
}
while循环:
语法:
初始化一个变量;
while(循环条件){
// 也结束while循环的 条件
}
循环条件必须是一个boolean类型;当boolean返回的是一个true,执行循环体。
当boolean返回的结果是false。 循环体不执行。
结束while循环:方式一
方式一:使用while的循环条件趋于false。
方式二:使用关键字break。跳出循环;
while无限循环的形式:
while(true){
}
//案例: 使用while循环斐波那契打印斐波那契数列:最大相项不能超过10000.
1 1 2 3 5 8 13...
m n k
m n k
1:明确循环次数的情况下,可以使用for。
2:不明确循环次数的时候使用while。
do...while循环:
语法:
do{
循环体
}while(表达式);
语法的解释:
执行顺序:先执行do当中的循环体。 之后去判断循环条件,如果循环条件返回的是true,再次执行循环体。 如果返回的结果为false,while循环结束。
案例:
判断给定年份是平年还是闰年,平年2月28天,闰年2月29天。
给定三角形的三条边,求面积。(海伦公式)Math类当中的方法。
语句:
(1)顺序结构
(2)选择结构:if if ...else if else if.. .else
switch case语句:
(3)循环结构:
二:switch case语句:
语法:
switch(表达式)
case 常量变量1: 语句一;
break;
case 常量变量2: 语句二;
break;
case 常量变量3: 语句三;
break;
...
}
解释:
(0)switch()当中的表达式可以是整型( 非 long),字符型。从JDK 7开始,可以使用字符串。表达式的类型要跟常量标号的类型相同。或者是相兼容。
(1)首先会计算表达式的值。
(2)表达式的值会常量标号进行匹配,执行响应的case语句。执行完相应的case语句,需要结束当前的的switch时,使用break关键字。
(3)当表达式的值和任何的常量标号不能批配的时候,默认会执行default语句。
三: 问题
(1)条件运算符和 if ...else 的区别?
条件运算符:就是一个运算符,运算结果必须要返回一个值。
简捷,运行效率比if else高。
if else ...数据处理能力比条件运算符强。
结论:如果能有条件运算符完成的,使用条件运算符完成。
不能使用条件运算符完成的使用if else 执行。
(2)if else 和switch的区别?
switch: 如果判断的具体的数值不多,而且复合非long整形,可以使用Switch。效率也比if else高。
对于一些区间的判断,对结果为boolean类型判断,只能使用if。
四: 循环控制:for while do...while
for循环:
1:语法:
for(表达式1;表达式2;表达式3){
...被重复执行的代码;
}
解释:
表达式一:初始化一个循环变量。
表达式二: 循环条件。能够确定循环的次数。返回的结果是一个boolean类型。
表达式三: 使表达式二趋于false结果。
执行顺序:
(1)先执行表达式一。
(2)执行表达式二:返回一个boolean类型的结果。当结果为true时,执行语句。
(3)执行表达式三:
(4)执行表达式二; 返回一个boolean类型的结果,继续执行语句。再执行表达式三,这样周而复始的执行。
当表达式二的结果为false的时候,结束for循环。
2: 注意事项:
(1) 如果循环体语句只有一句的时候,{}可以省略,不建议大家省略。
3:for循环的变形:
变量的声明:
for(;循环条件;){
//循环语句:
表达式三;
}
4:for的无限死循环形式:
for(;;){
}
while循环:
语法:
初始化一个变量;
while(循环条件){
// 也结束while循环的 条件
}
循环条件必须是一个boolean类型;当boolean返回的是一个true,执行循环体。
当boolean返回的结果是false。 循环体不执行。
结束while循环:方式一
方式一:使用while的循环条件趋于false。
方式二:使用关键字break。跳出循环;
while无限循环的形式:
while(true){
}
//案例: 使用while循环斐波那契打印斐波那契数列:最大相项不能超过10000.
1 1 2 3 5 8 13...
m n k
m n k
m n k
//打印斐波那契数列 最大项不超过10000 斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
int m=0;
int n=1;
int k=m+n;
System.out.print("0\t1\t1\t");
while(k<=10000) {
m=n;
n=k;
k=m+n;
System.out.print(k+"\t");
}
while循环和for循环如何选择?
1:明确循环次数的情况下,可以使用for。
2:不明确循环次数的时候使用while。
do...while循环:
语法:
do{
循环体
}while(表达式);
语法的解释:
执行顺序:先执行do当中的循环体。 之后去判断循环条件,如果循环条件返回的是true,再次执行循环体。 如果返回的结果为false,while循环结束。
案例:
给定月份,打印季节。
//给定月份打印季节
Scanner in=new Scanner(System.in);
System.out.println("请输入月份:");
int mounth=in.nextInt();
switch(mounth) {
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;
case 12:;
case 1:;
case 2:System.out.println("冬季");break;
default:System.out.println("error");break;
}
给定分数,打印等级。
//给定分数打印等级
Scanner in1=new Scanner(System.in);
System.out.println("请输入分数:");
int grade=in1.nextInt();
int g=grade/10;
switch(g) {
case 1:;
case 2:;
case 3:;
case 4:;
case 5:System.out.println("E");break;
case 6:System.out.println("D");break;
case 7:System.out.println("C");break;
case 8:System.out.println("B");break;
case 9:;
case 10:System.out.println("A");break;
default:System.out.println("error");break;
}
给定年份,求每个月的天数。
判断给定年份是平年还是闰年,平年2月28天,闰年2月29天。
给定三角形的三条边,求面积。(海伦公式)Math类当中的方法。
海伦公式:
//给定三角形的三条边,求面积。
System.out.println("请输入三角形的三条边长:");
Scanner in2=new Scanner(System.in);
double a=in2.nextDouble();
double b=in2.nextDouble();
double c=in2.nextDouble();
if(a>0&&b>0&&c>0) {
if(a+b>c&&a+c>b&&b+c>a) {
double p=(a+b+c)/2.0;
double s=Math.sqrt(p*(p-a)*(p-c)*(p-b));
System.out.println("三角形的面积为:"+s);
}
else
System.out.println("不能组成一个三角形!");
}
else
System.out.println("请输入正数!");
给定一个一元二次方程,求解:
//解一元二次方程 ax^2+bx+c=0
System.out.println("输入一元二次系数a,b,c:");
Scanner in3=new Scanner(System.in);
int x=in3.nextInt();
int y=in3.nextInt();
int z=in3.nextInt();
double x1,x2;
int deta=y*y-4*x*z;
if(deta==0){
x1=x2=(-y)/(2*x);
System.out.println("x1="+x1);
System.out.println("x2="+x2);
}else{
double t=Math.sqrt(Math.abs(deta))/(2*x);
if(deta>0){
x1=(-y)/(2*x)+t;
x2=(-y)/(2*x)-t;
System.out.println("x1="+x1);
System.out.println("x2="+x2);
}else{
x1=(-y)/(2*x);
x2=(-y)/(2*x);
System.out.println("x1="+x1+"+"+t+"*i");
System.out.println("x2="+x2+"-"+t+"*i");
}
}
给定一个时间,打印下一秒的时间。
// 给定一个时间,打印下一秒的时间。
System.out.println("请输入一个时间:");
Scanner in4=new Scanner(System.in);
int h=in4.nextInt();//时
int m=in4.nextInt();//分
int s=in4.nextInt();//秒
if(s==59) {
if(m==59) {
if(h==23) {
System.out.println("下一秒时间:00:00:00");
}
else {
h++;
System.out.println("下一秒时间:"+h+":00:00");
}
}
else {
m++;
System.out.println("下一秒时间:"+h+":"+m+":00");
}
}
else {
s++;
System.out.println("下一秒时间:"+h+":"+m+":"+s);
}
使用switch case语句,自作一个简单的计算器。
//用switch语句制作一个简单的计算器
System.out.println("简易计算器");
Scanner in5=new Scanner(System.in);
int a1=in5.nextInt();
String ch=in5.next();
int b1=in5.nextInt();
switch(ch){
case "+":System.out.println(a1+"+"+b1+"="+(a1+b1));break;
case "-":System.out.println(a1+"-"+b1+"="+(a1-b1));break;
case "*":System.out.println(a1+"x"+b1+"="+(a1*b1));break;
case "/":System.out.println(a1+"/"+b1+"="+(a1/b1));break;
}
打印1-100之间所有的奇数的个数。
//打印1-100之间所有的奇数的个数。
for(int i=1;i<=100;i+=2) {
System.out.print(i+"\t");
}
打印1-100之间的所有的能被3或者是能被7整个的数, 然后五个换行。
//打印1-100之间的所有的能被3或者是能被7整个的数, 然后五个换行。
int s=0;
for(int i=1;i<=100;i++) {
if(i%3==0||i%7==0) {
System.out.print(i+"\t");
s++;
if(s%5==0) {
System.out.println();
}
}
}
打印1-100之间的和:
//打印1-100之间的和
int s1=0;
for(int i=1;i<=100;i++) {
s1=s1+i;
}
System.out.println("和:"+s1);
打印1-100之间的所有的素数。(质数)
//打印1-100之间的所有的素数。(质数)质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
for(int i=2;i<=100;i++) {
int s=0;
for(int j=2;j<=i-1;j++) {
if(i%j==0)
s++;
}
if(s==0)
System.out.print(i+"\t");
}
打印100-999之间的水仙花数。水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)
//打印100-999之间的水仙花数。
for(int i=100;i<=999;i++) {
int a=i/100;
int b=i/10%10;
int c=i%10;
int s=(int) (Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3));
//System.out.println(a);
//System.out.println(b);
//System.out.println(c);
//System.out.println(s);
if(s==i)
System.out.print(i+"\t");
}
100-999之间的水仙花的个数。
//打印100-999之间的水仙花的个数。
int sum=0;
for(int i=100;i<=999;i++) {
int a=i/100;
int b=i/10%10;
int c=i%10;
int s=(int) (Math.pow(a, 3)+Math.pow(b, 3)+Math.pow(c, 3));
//System.out.println(a);
//System.out.println(b);
//System.out.println(c);
//System.out.println(s);
if(s==i)
sum++;
//System.out.print(i+"\t");
}
System.out.println("个数:"+sum);
斐波那契数列
1 1 2 3 5 8 。。。