流程控制语句的结构:
if
if
if (条件语句){ 执行语句; ……}
if...else (可以用三元运算转换符来改写,如:判断条件 ? 表达式1 : 表达式2)
if(判断语句{
执行语句1;
.....;
}else{
执行语句2;
执行语句1;
.....;
}else{
执行语句2;
......;
}
变量num值19 模以2为1,不等于0,判断条件不成立。执行else{}的语句。
if...else if...else
if...else if...else
if(判断条件1){
执行语句1
}else if(判断条件2){
执行语句2
}
....
else if(判断条件n){
执行语句n
}else {
执行语句n+1
}
判断条件1为true时,运行 执行语句1,判断条件1为false,继续执行判断条件2,结果为true则执行语句2,所有判断条件都为false,未满足,else后面{}中的执行语句n+1会执行
选择结构if语句与三元运算转换
三元运算符:判断条件 ? 表达式1 : 表达式2 当判断条件成立,结果为表达1 反之,表达式2循环语句while (while与if区别:w反复进行条件判断,只要条件成立,{}一直执行,直到不成立,循环结束)
while(循环条件){
执行语句.......
} {}是循环体,它是否执行取决于条件,当条件为true,体就执行,循环体执行完毕时会继续判断循环条件,直到循环条件为false,整个过程结束
循环语句 for (用在循环次数已知情况下)
格式:
for(初始化表达式; 循环条件; 操作表达式){
执行语句 ………}
语法结构中,for后面包括3个部分,初始化表达式、循环条件、操作表达式,之间用";"隔开,{}是循环体
变量i的初始值为1,在判断条件i<=4为true时,执行循环体sum+=i,执行完毕,会执行操作表达式 i++,i的值变为2,然后继续进行条件判断,开始下一次循环,直到i=5时,条件i<=4为false,结束循环,执行for循环后面的代码,打印“sum=10”
循环do..whlie
do {
执行语句.....}
while(循环条件); {}里面执行语句是循环体。do..while将循环条件放在循环体放后面,循环体先执行一次,再根据循环条件决定是否继续执行
While 和do..while区别
循环条件不成立,while循环体一次都不执行,
do..while 无条件执行一次再循环
无限循环
无限循环存在的原因是不知道循环多少次,根据条件,控制循环
循环嵌套(99乘法表、内层 外层)
用 * 打印直角三角形
跳转 break continue
通过while循环打印x的值,当x的值为3时使用break语句跳出循环。因此打印结果中并没有出现“x=4”。
2.标记
break内层循环时,只能跳出内层循环,想让它跳出外层循环,需加标记 a:
1 int i, j; // 定义两个循环变量 2 aaa: for (i = 1; i <= 9; i++) { // 外层循环 标记aaa 3 for (j = 1; j <= i; j++) { // 内层循环 4 if (i > 4) { // 判断i的值是否大于4 5 break aaa; // 跳出外层循环 6 } 7 System.out.print("*"); // 打印* 8 } 9 System.out.print(" "); // 换行 10 } 11 } 12 }
外层for循环前面增加了标记“aaa”。当i>4时,使用break aaa;语句跳出外层循环
3.continue语句(终止本次循环,执行下一次循环)
for循环让变量i的值在1~100之间循环,在循环过程中
1 //1-100内的奇数求和 2 public class ContinueDemo { 3 public static void main(String[] args) { 4 int sum = 0; // 定义变量sum,用于记住和 5 for (int i = 1; i <= 100; i++) { 6 if (i % 2 == 0) { // i是一个偶数,不累加 7 continue; // 结束本次循环 8 } 9 sum += i; // 实现sum和i的累加 10 } 11 System.out.println("sum = " + sum); 12 } 13 } 14 输出: 15 sum = 2500
当i的值为偶数时,将执行continue语句结束本次循环,进入下一次循环。
当i的值为奇数时,sum和i进行累加,最终得到1~100之间所有奇数的和,打印“sum = 2500”
流程控制语句switch(与if不同的事用于具体的值,if是范围);
选择结构switch语句:将表达式的值与目标值比较,满足则执行相应的执行语句;没有匹配的执行default后的语句;
switch (表达式){
case 目标值1:
执行语句1
break;
case 目标值2:
执行语句2
break;
......
case 目标值n:
执行语句n
break;
default:
执行语句n+1
break;
}
数组的定义
数据类型[] 数组名 =new 数据类型[元素个数或数组长度];
int[ ] x = new int(100);
int[ ] x;声明一个int[ ]类型的变量
x = new int[ 100];//创建一个长度为100的数组
数组内存图
1 public class ArrayDemo01 { 2 public static void main(String[] args) { 3 int[] arr; // 声明变量 4 arr = new int[3]; // 创建数组对象 5 System.out.println("arr[0]=" + arr[0]); // 访问数组中的第一个元素 6 System.out.println("arr[1]=" + arr[1]); // 访问数组中的第二个元素 7 System.out.println("arr[2]=" + arr[2]); // 访问数组中的第三个元素 8 System.out.println("数组的长度是:" + arr.length); // 打印数组长度 9 } 10 }
第8行代码显示,三个元素初始值 0,因为自赋默认值是0,元素不同,默认值不同
为数组元素赋值
1 public class ArrayDemo02 { 2 public static void main(String[] args) { 3 int[] arr = new int[4]; // 定义可以存储4个整数的数组 4 arr[0] = 1; // 为第1个元素赋值1 5 arr[1] = 2; // 为第2个元素赋值2 6 // 下面的代码是打印数组中每个元素的值 7 System.out.println("arr[0]=" + arr[0]); 8 System.out.println("arr[1]=" + arr[1]); 9 System.out.println("arr[2]=" + arr[2]); 10 System.out.println("arr[3]=" + arr[3]); 11 } 12 }
第3行代码定义了一个数组,此时数组中每个元素都为默认初始值0。第2、3行代码通过赋值语句将数组中的元素arr[0]和arr[1]分别赋值为1和2,而元素arr[2]和arr[3]没有赋值,其值仍为0,因此打印结果中四个元素的值依次为1、2、0、0。
数组静态初始化
1、类型[ ] 数组名 = new 类型[ ] {元素,元素,...};
2、类型[ ] 数组名 = {元素,元素,元素...};
数组的遍历
public class ArrayDemo04 { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组 // 使用for循环遍历数组的元素 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); // 通过索引访问元素 } } }
定义一个长度为5的数组arr,数组的角标为0~4。由于for循环中定义的变量i的值在循环过程中为0~4,因此可以作为索引,依次去访问数组中的元素,并将元素的值打印出来
1.简述Scanner类及Random类的功能和使用方式? Scanner类功能:引用数据类型,获取用户键盘录入的数据 方式:先在最顶部导包 import java.util.Scanner; 数据类型 变量名 = new 数据类型(); 变量名.方法名(); 举例 创建对象 Scanner sc=newScanner(System.in); 调用方法: int i=sc.nextInt();接收录入的数字 Strings=sc.next();接收录入的字符串 获取数字 System.out.println("请输入一个数字"); int n = sc.nextInt(); System.out.println("n的值为" + n); 获取字符串 System.out.println("请输入一个字符串"); String str = sc.next(); System.out.println("str的值为" + str); Random类功能:产生多种数据类型的随机数 顶部导包 import java.util.Random 举例 创建 Random 变量名 = new Random(); 产生0-100的随机数整数给i int i = r.nextInt(100); 得到0.0-1.0范围的随机小数 赋值给d变量 double d = r.nextDouble(); System.out.println(i); System.out.println(d); 2.if语句的格式有几种?注意事项是什么?分别在什么时候使用? 三种 :()里放判断条件 执行语句放在{} if(判断条件){执行语句} if(){}else{}:如果满足某种条件,就进行某种处理,否则进行另一种处理 if(){}else if(){}else if(){}...else{}:多种条件判断,进行多种不同处理 第一种:if(条件表达式){ 执行语句 } 注意: 1:if(条件表达式)其后没有分号。 一般来说,有"{}"有没有";",有";"就没有"{}" 2:if语句所控制的语句如果是一条语句,我们可以不写大括号; 如果控制的是两条以上的语句,必须加大括号。 if语句的控制体没有加大括号是其后跟的一条语句。 建议:永远加上大括号。避免不必要的错误。 第二种:if(条件表达式){ 执行语句1; } else{ 执行语句2; } 注意: 1:执行流程 判断条件表达式,为true,执行语句1,若为false ,执行语句2 2:if可单用,有else必有if 第三种:if(条件表达式){ 执行语句1; }else if(条件表达式){ 执行语句2; } ....... else{ 执行语句n; } 1:else可以省略,但是不建议。 (1)它是第三种格式的组成部分。 (2)你有可能没有判断完所有的情况,我们就可以使用else来完成特殊情况。 2:执行流程 格式很长,但它整体只是一条语句。 不断的判断,只要有满足条件的条件表达式,就执行该判断处控制的语句体,执行完后。语 句结束。 当都不满足时候,执行else。 3:if后面必须有条件表达式。 else后面没有条件表达式。 4:if语句的嵌套 if语句里面的语句体还是if语句。 3.for循环、while循环、do-while循环的格式是什么?简述执行流程及注意事项? for循环:for(初始化表达式; 循环条件; 操作表达式){ 执行语句 ……… } for关键字后面()中包括三部分:初始化表达式、循环条件和操作表达式,它们之间“;”分 隔{}中的执行语句为循环体。 while循环:while(循环条件){ 执行语句 ……… } 当循环条件为true时,循环体就执行。执行完毕时会继续判断循环条件,如条件仍为true则 继续执行,直到循环条件为false时,整个循环过程才结束。 do-while:do { 执行语句 ……… } while(循环条件); 循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。 5.简述break、continue及循环标号的作用?
break结束当前循环
contiune 跳出本次循环
在任何内循环内可以通过查找标号的方式来实现结束和挑传操作
6.编写程序,生成5个1至10之间的随机整数,并打印结果到控制台。
import java.util.Random;
public class RandomDemo{
public static void main (String args[]){
for (int a = 0 ; a < 5 ; a++){
System.out.println(new Random().nextInt(10)+1);
}
}
}
8.编写程序,打印1到100之内的整数,但数字中包含7的要跳过
代码1:
import java.util.*;
//打印1到100之内的整数,但数字中包含7的要跳过
public class NumberDemo{
public static void main (String[] args){
for (int a = 1 ; a <= 100 ; a++){
if(!String.valueOf(a).contains("7")){
System.out.print(a+" ");
}
}
}
}
代码2:
//打印1到100之内的整数,但数字中包含7的要跳过
public class User {
public static void main(String[] args) {
int ge, shi;
for (int a = 1; a <= 100; a++) {
ge = a % 10;
shi = a / 10 % 10;
if (a < 10) {
if (!(a == 7)) {
System.out.print(a+" ");
}
} else {
if (!(ge == 7 || shi == 7)) {
System.out.print(a+" ");
}
}
}
}
}
代码3:
public class User {
public static void main(String[] args) {
for (int a = 1 ; a <= 100; a++){
if(a % 10 == 7 || a / 10 % 10 == 7){
continue;
}
System.out.println(a);
}
}
}
10.我国最高山峰是珠穆朗玛峰,8848米。现在我有一张足够大的纸,它的厚度是0.01
米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
public static void main(String[] args) {
double paperThick = 0.01;
int count = 0;
while (true){
if (paperThick < 8848.0){
count++;
paperThick = paperThick * 2.0;
System.out.println("第"+count+"次折"+paperThick+"M");
}else{
break;
}
}
System.out.println("一共能折"+count+"次");
}
11.看程序写结果:请自己独立分析,先不要编译运行。
第一题
int x = 1,y = 1;
if(x++==2 & ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//x=2 y=2
---------------------------------------------------
第二题
int x = 1,y = 1;
if(x++==2 && ++y==2)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//x=2 y = 1
---------------------------------------------------
第三题
int x = 1,y = 1;
if(x++==1 | ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//x = 7 y = 2
---------------------------------------------------
第四题
int x = 1,y = 1;
if(x++==1 || ++y==1)
{
x =7;
}
System.out.println("x="+x+",y="+y);
//x = 7 y = 1
---------------------------------------------------
第五题//b
boolean b = true;
if(b==false)
System.out.println("a");
else if(b)
System.out.println("b");//true
else if(!b)
System.out.println("c");
else
System.out.println("d");
---------------------------------------------------
12.需求:
* 键盘录入x的值,计算出y的并输出。
* x>=3 y = 2 * x + 1;
* -1<x<3 y = 2 * x;
* x<=-1 y = 2 * x - 1;
代码:
public static void main(String[] args) {
@SuppressWarnings("resource")
int x = new Scanner(System.in).nextInt();
System.out.println("y = " + (x >= 3 ? ((2 * x) + 1) : x > -1 && x < 3 ? 2 * x : x <= -1 ? ((2 * x) - 1) : ""));
}
13.键盘录入三个整数,并将三个数据中的最大值打印在控制台。
代码:
public static void main(String[] args) {
@SuppressWarnings("resource")
int x = new Scanner(System.in).nextInt();
@SuppressWarnings("resource")
int y = new Scanner(System.in).nextInt();
@SuppressWarnings("resource")
int z = new Scanner(System.in).nextInt();
System.out.println("max = " + (Math.max(Math.max(x, y), z)));
}