Java小白学习笔记d4(for,while.冒泡排序)

接着昨天的if switch

//switch的星期几
     int i=9;
     switch(i){//switch()里面必须是byte,short,int,char.string.枚举
     case 1://case后面必须是常量,确定的
      System.out.println("星期一");
      break;
     case 2:
      System.out.println("星期二");
      break;
     case 3:
      System.out.println("星期三");
      break;
      default://任选的,可写可不写同else
       System.out.println("none");
       break;//没有他就卡不住了,从头到尾不会停止。必须写
      
     }
     }
     }
    //switch与if两个语句对比。
//switch:数值不多,符合byte,short,int,char,建议使用,效率更高
//if范围更广,结果为布尔类型的。不知道用哪个的时候都使用if ,通用,主要使用if

循环结构
for循环

public static void main(String[] args) {
  // 连续输出五次hello world 
  for(int i=0;i<5;i++ ) {//初始化表达式1;布尔值测试表达式2;更改表达式
   System.out.println(i);//过程,初始化i(变量),判断是否小于5,如果是就开始执行{}里的代码块即输出hello,然后执行更改表达式i++,重新赋值
   //i=1,判断是否小于5,是,执行{}里输出。。。。。。。
  System.out.println("hello world");
  }
 }

计算1+2+3……100=5050

public static void main(String[] args){
int result=0;
for(int i=1;i<=100;i++){
result+=i;
}
System.out.println("result="+result);
}

小练习/3.输出水仙花数
(一个三位数,153=111+333+555),
思路:先循环所有三位数100-999,拆分出三位


  //例如145,145/100=1,(145-1*100)/10=4,145-1*100-4-10=5
   for(int j=100;j<=999;j++) {
    int a=j/100;//得到百位数
    int b=(j-a*100)/10;
    int c=j-100*a-10*b;
   int res=a*a*a+b*b*b+c*c*c;//判断是不是水仙花数
   if(res==j){
     System.out.println(j);
    }
   }

while循环与do-while循环

 //用while循环输出1-100
   int i=1;
   while(i<=100) {
    //获取变量i<=100的结果,是真还是假,如果是真就执行while后面{}里的代码,假的就不执行
    System.out.println(i);
    i++;//不断改变i的值
    //do-while
    int m=1;
    do {
     System.out.println(m);
     m++;
    }while(m<=100);
    
   }

小练习

//求1-100所有偶数的和,用for,while分别实现
  int res=0;
  for(int i=1;i<=100;i++) {
   if (i%2==0) {
    res+=i;
   }
  }
  System.out.println(res);//注意,要在for循环之外输出最后的结果
  int rt=0;
  int k=1;
  while(k<101) {
   if(k%2==0) {
    rt+=k;
   }
   k++;
  }
  System.out.println(rt);

无限循环

for(;;){}
while(true){}

嵌套循环
注意;尽量保证外层大循环次数小于内层小循环
在这里插入图片描述
在这里插入图片描述
小练习:
//输出1-100所有质数(大于1自然数,只能被1和本身整除)
//思路:4,4除以1,2,3,4能被整除几次,取模判断,如果只有两次就是质数

  for(int i=1;i<=100;i++) {
   int k=0;//整除的次数
   for(int j=1;j<=i;j++) {//循环1-i,用i与1-i之间的数进行分别驱魔
    if(i%j==0) {
     k++;
     
    }
   }
   if(k==2) {
    System.out.println(i);
   }
  }

特殊流程控制语句
break终止循环 终止当前所在的循环。只用于switch语句和循环语句
contiune结束当前这次循环,直接进入下一次循环 对当前所在循环起作用,结束当前这次循环,当前循环的下面的代码不执行,直接进入下一次循环 只用于循环语句
return结束方法 看起来与break相似,但是return是结束了整个方法,break仅仅结束了当前的循环

一维数组

数组:存放多个数据的集合
int i [ ];
动态初始化:
数组元素默认值,数字0,对象默认null

int [] i=new int[4];//能放下4个int类型的数组
i[0]=2;//数组的赋值

静态初始化

int [] i=new int[] {1,2,3,4};//放1 2 3 4数组

如何引用:
数字下标,从0开始。.length长度

多维数组

int [][] i=new int[] [];{
           {1,2},
           {3,4}
           };
           int [][] i=new int[2] [3];//第一维度长度2,第二维度3
           {
           {123}{333}
           }

特殊写法 int [] x,y[];x是一维数组,y是二维数组
数组小练习

int [] [] arr=new int [] [] {
   {3,8,2},
   {2,7},
   {9,0,1,6},
  };
  int len=arr.length;//数组的一维长度
  int res=0;
   for(int i=0;i<len;i++) {
    int [] arro=arr[i];
   //二维数组长度
    for(int j=0;j<arro.length;j++) {
     res+=arro[j];
     
    }
   }
   System.out.println(res);
  }
 }

数组的复制

冒泡排序

//正序,从大到小
//4,7,3,1
第一轮4317
第二轮3417 得到除了最后一个属最大之外,最大的数字
第三轮1347
int arr[]=new int[]{4,7,3,1};
int temp=0;
for(int i=0;i<arr.length-1;i++){//外层循环是循环几轮的次数,轮数循环的次数时数字的长度-1
for(int j=0;j<arr.length-1-i;j++){
//每一轮次的数字对比排序,每论次循环一次4.3.2
if(arr[j]>arr[j+1])
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;//两个相邻元素,前面的大于后面的,进行交换
}
}
for (int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值