java编程基础2
8、程序流程结构 8.1顺序结构8.2if选择结构 8.2.1结构语法从上到下循序执行
if(条件boolean){} / if(条件boolean){} else{}
###类型
8.2.2 执行规则
if(条件1){} ……if(条件n){}
if(条件1){} else if(条件2){} …… else if(条件n){}else{}
if(条件1){
if(条件2){ …… …… if(条件n){ }else{ } }else{ }}else{
if(条件3){ …… …… }else{ if(条件n){ }else{ } } }
- if语句顺序执行
- 当有if成立则不往下执行else
import java.util.Random; // 引用随机数
import java.util.Scanner; //输入导包
public class Tes5{
public static void main(String[] args){
Scanner sc = new Scanner(System.in); //定义输入器
Random random = new Random(); //定义数据
int m0 = (int)(Math.random()*10);
System.out.print("BOOS:21点游戏n");
int m = (int)(Math.random()*10);
System.out.print("BOOS:我的第一个数是:");
System.out.print("*");
System.out.print("n");
int ma = (int)(Math.random()*10);
System.out.print("BOOS:你的第一个数是:");
System.out.print(ma);
System.out.print("n");
int m2 = (int)(Math.random()*10);
System.out.print("BOOS:我的第二个数是:");
System.out.print("*");
System.out.print("n");
int mb = (int)(Math.random()*10);
System.out.print("BOOS:你的第二个数是:");
System.out.print(mb);
System.out.print("n");
System.out.print("BOOS:公用数是:"+m0 +"n" );
System.out.print("BOOS:你的二个数是:"+ma + mb+"n" );
System.out.print("BOOS:你还需要数字吗?需要请输1n");
int num =sc.nextInt();
if( num == 1 ){
int mc = (int)(Math.random()*10);
System.out.print("BOOS:你的第三个数是:");
System.out.print(mc);
System.out.print("n");
int m3 = (int)(Math.random()*10);
System.out.print("BOOS:我的第三个数是:");
System.out.print(m3);
System.out.print("n");
int u = ma + mb +mc+m0;
int v = m + m2 +m3+m0;
if( 22 > u ){ //简单if()else{}结构
if ( u>v ){ //多重if结构使用
System.out.print("你赢了n");
}else
if ( u
System.out.print("Game Over!!!n");
System.out.print("我的三个数是n" + m+m3 + m2+"n");
}
}else{
System.out.print("你飘了!!!n");
System.out.print("我的三个数是n" + m+m3 + m2+"n");
}
}else{
int u1 = ma + mb+m0; // 定义数据类型并运算赋值
int v1 = m + m2+m0;
if( 22 > u1 ){ //嵌套if结构使用
if ( u1>v1 ){
System.out.print("你赢了n");
}else{
System.out.print("Game Over!!!n");
}
}else{
System.out.print("你飘了!!!n");
System.out.print("我的三个数是n" +m + m2+"n");
}
}
}
}
``
8.3 switch选择结构
8.3.1结构语法
8.3.2特点switch(表达式)}{
case常量值1:
break;
……
……
case常量值n:
break;
default:
break;
}
8.3.3switch语句的“贯穿”现象1、switch语句称为情况选择语句,又称为开关语句。
2、switch是分支语句的一种,用于对多种情况进行不同处理的语句。
3、JDK1.7 之前的switch语句限定对整形数据进行判断。
当上一个case没break结尾时上边语句会贯穿到下面语句
例如:
System.out.print(“输入今年的一个月份”);
int m=input.nextInt();
switch(m){
case 1:
case 3:
case 4:
case 5:
case 5:
case 7:
case 10:
case 12: System.out.print(“这个月有5个周日”);
break;
case 2:
case 8:
case 9:
case 11: System.out.print(“这个月有4个周日”);
break;
}
当输入值是1、3、4、5、6、7、10、12的时候都输出“这个月有5个周日”
package Class20220606;
import java.util.Scanner;
public class Work4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入月份:");
int month = sc.nextInt();
switch(month){
case 1:
case 3:
case 5:
case 7:
case 10:
case 8:
case 12:System.out.print("这个月31天");
break;
case 2:System.out.print("这个月共28天");
break;
case 4:
case 11:
case 6:
case 9:System.out.print("这个月共30天");
break;
default:System.out.print("你是认真的吗!!!");
break;
}
}
}
8.4while循环结构
8.4.1结构语法
8.4.2特点while(循环条件){
}
8.5do{}while循环结构 8.5.1结构语法**执行流程:**先判断循环条件,条件如果成立,就执行循环操作;循环操作执行完成,继续判断条件;
条件如果成立,就执行循环操作;。。。直到条件不成立,循环结束。
特点:先判断,再执行
如果条件不成立,循环操作可能一次都不执行
8.5.2特点Do{
}while(循环条件);
执行:先执行一遍循环操作,然后判断条件,条件成立,就继续执行操作;
循环操作执行结束,继续判断条件;。。。。。直到循环条件不成立,循环结束。
特点:先执行,后判断
循环操作至少会执行一次
public class Work3 {
public static void main(String[] args) {
// 定义常量
final int NUM0 = 91;
final int NUM1 = 27;
int n = NUM1-1;//定义循环变量,递减
while(NUM1%n != 0 || 0 != NUM0%n ) {
n--;
}
System.out.print(NUM0 +"和"+ NUM1+"的最大公约数是"+(n)+"n");
// 定义变量
int num0 = 99;
int num1 = 81;
int m1=0;
//定义循环变量,递曾(不是最优,可能多出必要的循环次数)
for(int m=1; m<=num1;m++) {
if(num1%m == 0 && num0%m == 0) {
m1=m ;
}
}
System.out.print(num0+"和"+num1+"的最大公约数是"+m1);
}
}
8.6for循环
8.6.1结构语法
8.6.1特点for(定义循环变量; 循环条件; 循环变量的更新){
循环操作
}
特点:循环次数固定
public class Work3 {
public static void main(String[] args) {
// 定义常量
final int NUM0 = 91;
final int NUM1 = 27;
int n = NUM1-1;//定义循环变量,递减
while(NUM1%n != 0 || 0 != NUM0%n ) {
n--;
}
System.out.print(NUM0 +"和"+ NUM1+"的最大公约数是"+(n)+"n");
// 定义变量
int num0 = 99;
int num1 = 81;
int m1=0;
//定义循环变量,递曾(不是最优,可能多出必要的循环次数)
for(int m=1; m<=num1;m++) {
if(num1%m == 0 && num0%m == 0) {
m1=m ;
}
}
System.out.print(num0+"和"+num1+"的最大公约数是"+m1);
}
}
8.7双重循环
循环中可以嵌套循环,嵌套两层就叫双重循环。 双重循环的特点:外层循环执行一轮,内层循环执行一遍。总共执行次数n*m。
public class Star{
public static void main(String[] args){
for(int i=1;i<=5;i++){ //外层循环控制行,循环5次
for(int j=1;j<=i ;j++){ //内层循环控制行
System.out.print("*");
}
System.out.println();
}
}
}
8.8continue和break运行结果
*
* *
* * *
* * * *
* * * * *
9、数组 java数组特点continue;
可以打断不执行本轮循环,但不影响后面的程序运行
break;
跳出程序
声明数组和定义长度1、Java语言中的数组是一种 引用数据类型
2、数组实际上是一个存在堆的一个容器,可以同时容纳多个元素。
3、元素可以为空,数组长度不能变
3、各个元素数据类型必须类型统一
数组赋值声明:
数据类型[] 数组名;
数据类型 数组名[];
定义长度:
数组名 = new 数据类型[长度];
遍历数组名[下标] = 值;
数组名 = new 数据类型[]{值1,值2, …… ,值n};
数组排序 冒泡排序所谓**遍历(Traversal)**是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。
遍历数组:for(int n:nums){
System.out.print(num+" ");
}
排序规则: 1、相邻两数比较,小数在前,大数在后,如果不符合就交换
2、直到不需要再交换为止
public class Maopao{
public static void main(String[] args){
int[] nums=new int[6]; //对该数组进行排序
//遍历数组下标为0到最大长度减一的数
for(int i=0;i
//遍历的数每次循环减少一个
for(int j=0;j
if(arr[j] //比较大小 大的在后面
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
//遍历的数组中的数字
for(int i=0;i
System.out.print(nums[i]+" "); //打印
}
}
}
Arrays.sort
**用法:**Arrays.sort(需排序的数组名)
int[] nums= {71,2,44,23}; Arrays.sort(nums);//升序
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
选择排序
public class XuanZe{
public static void main(String[] args){
int[] nums={2,3,5,6,1,4}; //对该数组进行排序
//遍历数组下标[0,nums.length]
for(int i=0;i
//遍历数组下标[i+1,nums.length]
for(int j=i+1;j
if(arr[i]>nums[j]){ //比较大小,
//如果前者比后者大则交换两个角标对应的值
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
}
for(int i=0;i
System.out.print(nums[i]+" "); //打印排序后的值
}
}
}
插入排序
public static void main(String[] args){
int[] arr=new int[8];
arr[1]=2;
arr[2]=4;
arr[3]=8;
arr[4]=36;
arr[5]=72;
arr[6]=108;
int len=arr.length;
int n=81;
//1、确定插入点的位置index
for(int i=0;i
if(arr[i]>len-1){
break;
}
// [len-2,index]依次往后移
for (int i = len-2; i >=index; i--) {
arr[i+1]=arr[i];
}
//3、nums[index]=n
arr[index]=n;
for(int m:arr){
System.out.print(num+" ");
}
}



