测试题:
1. 在JAVA中,以下程序的输出结果为()。
boolean b1=true,b2=false; b1=false;b2=false;
if((b1=2>3) && (b2=5>0)){
b1=true;
}
System.out.print("b1="+b1+";b2="+b2);
2. 在java中,运行下面的代码输出的结果是()
int x = 1;int y = 2; x += y+y;
if(x < 5 && y <=4){
System.out.println("1");
}else if(x >= 5 || y>4){
System.out.println("2");
}else{
System.out.println("error");
}
测试题1 输出:
b1=false;b2=false
测试题2 输出:
2
案例:给定一个年份,判断是否是闰年
闰年的判断标准是:
1)可以被4整除,但不可被100整除
2)可以被400整除
public class Home2{
public static void main(String[] args){
int year=2018;
if(year%400==0 || (year%4==0 && year%100!=0)){
System.out.println(year+"是闰年");
}else{
System.out.println(year+"不是闰年");
}
}
}
输出:
2018不是闰年
if和switch有什么区别!
if的功能多一些。虽然官方说switch效率高些(没测试过,不过现在计算机不差这点性能)。
switch的功能做不了区间的功能,比如 i>=5 区间很多,switch只能判断 == 的情况。
今天如果是第一次接触,会感觉难,烧脑!5天之后,就会觉得很简单(每天都在用)
【类似刚学骑自行车,不知道怎么把握平衡,上车多练就行!!!】
1. 循环结构
为什么要有循环结构呢?
打印534次,好好学习天天向上!争取得到植发奖励!
作用:提高复用性,提高扩展性和维护性!
1.1 while
语法:while(循环条件){代码块}
原理:循环条件成立,则执行代码块,执行完代码块,会再次回到循环条件判断的位置
如果依然成立,则再次执行代码块,直到循环条件不成立为止(循环结构结束)
控制循环次数:
① 循环因子
② 循环条件
③ 循环因子值的改变
案例:
int i=0;//程序员的习惯,0认为是第一个数据
while(i<5){
System.out.println("好好学习天天向上!争取得到植发奖励!"+i);
i++;
}
建议常用手段:i++就放在循环的最末尾!
练习:
1. 打印10次的HelloWorld
2. 打印1-5和5-1
3. 求出1-5之间数据之和
4. 求出1-100之间偶数和
5. 不断输入正数,直到输入-1为止(输入-1之外的数字时,提示输入有误,再次输入)
不知道循环次数!循环次数是由用户决定的!
6. 班级有5位同学,依次输入每位同学的java成绩,求出java总成绩和最高分、平均分、最低分
示例:
public class Test6{
public static void main(String[] args){
java.util.Scanner input=new java.util.Scanner(System.in);
int i=1;
double sum=0;
double max=0;//擂主台
double min=100;//给一个int型的最大值(Integer.MAX_VALUE)
//打雷台的机制 5位选手依次上台,每位选手都和擂主台上比大小,
//如果大擂主更新,如果小,不更新
while(i<=5){
System.out.println("请输入第"+i+"位同学的成绩:");
double score=input.nextDouble();
System.out.println("第"+i+"同学的成绩为:"+score);
sum+=score;
if(score>max){//如果该位选手的成绩改与擂主
max=score;//他就是新晋擂主
}
if(score<min){
min=score;
}
i++;
}
System.out.println("总分为:"+sum);
System.out.println("最高分为:"+max);
System.out.println("最低分为:"+min);
System.out.println("平均分为:"+sum/5);
}
}
输出:
请输入第1位同学的成绩:
56
第1同学的成绩为:56.0
请输入第2位同学的成绩:
24
第2同学的成绩为:24.0
请输入第3位同学的成绩:
80
第3同学的成绩为:80.0
请输入第4位同学的成绩:
90
第4同学的成绩为:90.0
请输入第5位同学的成绩:
98
第5同学的成绩为:98.0
总分为:348.0
最高分为:98.0
最低分为:24.0
平均分为:69.6
循环的嵌套:难度较高
打印图形:
a. 矩形
****
****
****
b. 直角三角形 --> 99乘法表
*
**
***
****
*****
c. 直角三角形
*
***
*****
*******
*********
d. 等腰三角形
*
***
*****
*******
【8】
示例:直角三角形
public class Test7{
public static void main(String[] args){
int i=0;
while(i<5){//控制行数
int j=0;
while(j<i+1){//控制每行的*数 和行数有关(由i的值所决定的);另一直角三角形【规律:2*i+1】
System.out.print("*");
j++;
}
System.out.println();//换行
i++;
}
}
}
输出:
*
**
***
****
*****
这边的嵌套示例,大都按类似下面模式来写:
int i=0;
while(i<5){//控制行数
int j=0;
while(j<i+1){//找规律,相应修改条件
具体执行代码
j++;
}
System.out.println();//换行
i++;
}
【9】
示例:99乘法表
public class Test1{
public static void main(String[] args){
//99乘法表
/*
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
...
*/
int i=1;//i的取值是1-9
while(i<=9){
int j=1;
while(j<i+1){
System.out.print(i+"*"+j+"="+i*j+" ");
j++;
}
System.out.println();//换行
i++;
}
/*
分析程序的运行流程
i=0 有哪些内容输出,j的值如何变化,i的值如何变化
*/
}
}
示例:等腰三角形
public class Test3{
public static void main(String[] args){
int i=0;
while(i<5){//控制行数
int k=0;
while(k<5-1-i){//控制空格数
System.out.print(" ");
k++;
}
int j=0;
while(j<2*i+1){//控制*数
System.out.print("*");
j++;
}
System.out.println();
i++;
}
/*
i j j=2*i+1; k k=4-i
0 j<1 k<4
1 j<3 k<3
2 j<5 k<2
3 j<7 k<1
*/
}
}
输出:
*
***
*****
*******
*********
1.2 for
语法:for(循环因子的声明;循环条件;循环因子值的改变){代码块}
优势:将while循环的控制循环次数的三个要素,总结到一个地方去了(小括号内)
确定循环次数的情况下,使用for循环
不确定循环次数的情况下,使用while循环
for(;;){} //这样写是死循环
示例:下面这两处声明 int i=0; 【可以】,但把 for 循环写在 while 下面,则不行。
public class Demo2{
public static void main(String[] args){
for(int i=0;i<6;i++){
String name="";
}//这个for循环执行结束,i的空间会释放掉
//此时就相当于i没有到过我的世界
int i=0;
while(i<5){
i++;
}
}
}
1.3 do-while
语法:do{代码块}while(循环条件);
原理:执行代码块,然后判断循环条件,如果条件成立,则继续执行代码块
如果条件不成立,则循环结束
特点:do-while至少执行一次
使用场景:不确定循环次数的情况(登录注册)
练习:
循环输入正数,输入-1停止! ★
登录注册->while/do-while
示例:
public class Demo3{
public static void main(String[] args){
int i=0; //【注:循环因子的声明写在这里】,不能写在 do 里面的代码块中
do{
System.out.println("HelloWorld"+i);
i++;
}while(i<5);
}
}
1.4 其他循环
foreach 增强for循环(后期学)
递归 循环的一种(讲完方法学)
2. 跳转结构
2.1 break
① switch内
用于结束当前switch
② 用在循环内(while,for,do-while,foreach)
用于结束当前循环
2.2 continue
① 用在循环内(while,for,do-while,foreach)
用于结束本次循环,直接进入下一次循环
练习:
1. 不断输入正数,直到输入-1为止(使用break完成)
2. 打印1-100数字,7的倍数跳过!(使用continue)