if语句
if 语句是条件执行语句,基本语法是这样的:
if (括号里面写的是boolean类型的变量 结果是true 或者 false){
代码块;
}
举个例子:
//因为3>2是true,所以执行大括号内的代码块,输出 我就出去玩
if(3>2){
System.out.println("我就出去玩");
}
---------------------------------------------------------
//下面的代码块 因为3<2是false,所以不执行大括号内的代码
if(3<2){
System.out.println("我就不出去玩");
}
if else语句
if else 语句也是条件执行语句,其基本语法如下:
if(3>2){ //3>2是true,所以执行括号内的语句
System.out.println("我就出去玩");
}else{ //如果if括号内的语句是false,则会执行else大括号内的代码
System.out.println("我就不出去玩了");
}
switch case语句
switch case 语句是条件执行语句,其基本语法:
switch (括号内可以写的数据类型:int char short byte){ //如果括号内是int型,则case 后面跟int型;如果是char型,则case后面跟char类型
case 1:
代码块1;
break;//break 关键字是人为加上去的,如果想依次从case1执行到case4,则不需要加break;如果要想执行完case1之后,不再执行下面的case,则需要加上break
case 2:
代码块2;
case 3:
代码块3;
defalut://如果以上case 1,2,3 都不符合 则执行 default
代码块4;
for循环
先来说一下for循环的三个必要条件:初始值,终点判断条件,变化量;
for循环语句的执行过程
for(int i = 1;i <= 5;i++){
System.out.println("我跑了"+i+"圈了");
}
//第一步:int i= 1,i<=5成立,执行输出语句,我跑了1圈了;
//第二步:i++ 此时i=2,i<=5成立,执行输出语句,我跑了2圈了;
//第三步:i++ 此时i=3,i<=5成立,执行输出语句,我跑了3圈了;
//第四步:i++ 此时i=4,i<=5成立,执行输出语句,我跑了4圈了;
//第五步:i++ 此时i=5,i<=5成立,执行输出语句,我跑了5圈了;
//第六步:i++ 此时i = 6,i<=5不成立,循环语句结束,但是此时 i==6
再来看下一个代码
注意i++的位置不同,输出结果也不同
for (int i = 1;i <= 5;){
System.out.println("我跑了"+ i +"圈了");
i++;
}
//上述语句的运行结果是: 我跑了1圈了
我跑了2圈了
我跑了3圈了
我跑了4圈了
我跑了5圈了
for (int i = 1;i <= 5;){
i++;
System.out.println("我跑了"+ i +"圈了");
}
// 上述代码的运行结果: 我跑了2圈了
我跑了3圈了
我跑了4圈了
我跑了5圈了
我跑了6圈了
再说一下变量的生命周期:变量是存储在栈内存空间的,从声明开始创建出来,用完了之后,立即回收。
for (int i = 1;i <= 5;){
i++;
System.out.println("我跑了"+ i +"圈了");
}
System.out.prinln(i);//这时就会编译出错,因为i是定义在for循环内的,现在的for循环已经结束了,所以i就会被回收掉
加工零件问题
甲乙丙丁四个人加工零件,总共有370个
- 如果甲加工的零件数多10个;
- 如果乙加工的零件数少20个;
- 如果丙加工的零件数*2;
- 如果丁家栋的零件数/2;
- 那么他们加工的零件数将会相等;
先来分析:设 他们加工零件数相同是 i 个,那么
甲:i - 10
乙:i + 20
丙:i / 2
丁:i * 2
那么就会有等式: i - 10 + i + 20 + i / 2 + i * 2 == 370;
for (int i = 1;i < 92;i++){//因为370/4==92
if (i - 10 + i + 20 + i / 2 + i * 2 == 370){
System.out.println(i - 10); //甲 70
System.out.println(i + 20); //乙 100
System.out.println(i / 2); //丙 40
System.out.println(i * 2); //丁 160
break;
}
}
三位数的水仙花
int i;
for (i = 100;i <= 999; i++){
int a = i / 100; //a是百位数
int c = i % 10; //c是个位数
int b = (i % 100) / 10; // b是十位数
if (((a * a * a) + (b * b * b) + (c * c * c )) == i){
System.out.println(i); //输出结果是153、370、371、407
}
}
鸡兔同笼问题
- 小鸡和兔子共有50个头;
- 他们的脚有160只;
int x; //x是小鸡的数
for (x = 1;x <= 50;x++){
int y = 50 - x; //y是兔子的个数
if ((2 * x + 4 * y) == 160){
System.out.println(x); //20
System.out.println(y); //30
}
}
乘法表
for (int i = 1;i <= 9;i ++){
for (int j = 1;j <= i;j++){
int num = i * j;
System.out.print(i + " * " + j +" = " + num + " \t ");
}
System.out.println();
输出结果:
数字金字塔
for (int i = 1;i <= 9;i ++){
for (int j = 1;j <= i;j++){
int num = i * j;
System.out.print(i + " * " + j +" = " + num + " ");
}
System.out.println();
输出结果:
2–20之间的素数
for (int i = 2;i <= 20;i++){
boolean t = true;
for (int j = 2;j <= i/2;j++){
if (i % j == 0){
t = false;
break;
}
}
if (!t){
System.out.println(i + "不是素数");
}else {
System.out.println(i + "是素数");
}
}
输出结果:
关键字 break 和 continue
- break:中断本层循环
- continue:中断本次循环
int i = 1;
for(i = 1;i <=5;i++){
for(int j = 1;j <=5;j++){
if(j == 3){
break;//中断的是本层for循环,直接进入到第一层for循环,所以只运行j==1和j==2的部分
}
System.out.println("我是好学生");//这个语句输出了10遍
}
}
for(i = 1;i <= 5;i++){
for(j = 1;j <= 5;j++){
if(j == 3){
continue;;//中断的是本次循环,当j==4和j==5时,都执行下面的输出语句
}
System.out.println("我是好学生");//这个语句输出了20遍
}
}
while 和 do while
- while 语句如下:
初始值;
while(终点判断条件){
代码块;
变化量;
} - do while 语句 如下:
初始值;
do{
代码块;
变化量;
}while(终点判断条件)
// 利用while语句打印乘法表
int i = 1;
int j = 1;
while (i <= 9){
j = 1;
while(j <= i){
System.out.print(i + "*" + j + "=" + i * j + "\t");
j++;
}
System.out.println();
i++;
}