流程控制语句 if if..else while for do...while 数组

流程控制语句的结构:
if    

if (条件语句){        执行语句;        ……}

if...else (可以用三元运算转换符来改写,如:判断条件 ? 表达式1 : 表达式2)   
if(判断语句{
   执行语句1;
    .....;
  }else{
  执行语句2;

  ......;
  }

 
变量num值19 模以2为1,不等于0,判断条件不成立。执行else{}的语句。
 if...else if...else    
if(判断条件1){

    执行语句1

  }else if(判断条件2){

    执行语句2

  }

     ....

  else if(判断条件n){

    执行语句n

  }else {

    执行语句n+1

  }

判断条件1true时,运行 执行语句1,判断条件1false,继续执行判断条件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("\n"); // 换行
10         }
11     }
12 }
 
   外层for循环前面增加了标记“aaa”。当i>4时,使用break aaa;语句跳出外层循环
3.continue语句(终止本次循环,执行下一次循环)
 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
for循环让变量i的值在1~100之间循环,在循环过程中
当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-whiledo {
        执行语句
        ………
      } 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)));
    }

 

posted @ 2019-05-10 18:28  zhansen521  阅读(726)  评论(0编辑  收藏  举报