一、循环
for循环
while循环
do...while循环
1.for循环 明确循环多少次
//变量声明(计数器)
//判断(是否继续循环的条件)
//计数器的调整(自增)
//例题:从1打印到10
for(int i=1;i<=10;i++) {
System.out.println(i);
}
//例题:获取0-100之间的随机数,并且求和
int[] arr=new int[20];
for(int i=0;i<arr.length;i++) {
//[0,1)--[0,100) random方法初始[0,1) 返回的是double类型 需要强制转换
arr[i]=(int)(Math.random()*100);
//arr[i]=(int)(Math.random()*55)+25; // [0,55)+25==[25,80)
}
System.out.println(Arrays.toString(arr));
int sum=0;
for(int i=0;i<arr.length;i++) {
sum+=arr[i];
}
System.out.println(sum);
//例题:声明一个数组 随机生成数字到数组 并判断是否是偶数 打印该数组的所有偶数
int[] a=new int[20];
for(int i=0;i<a.length;i++) {
a[i]=(int)(Math.random()*100);
}
for(int i=0;i<a.length;i++) {
if(a[i]%2==0) {
System.out.println(a[i]);
}
}
2.while循环
whlie循环 不确定循环多少次
while循环可以一次都不执行
例题:从1打印到10
int i=1;
while(i<=10) {
System.out.println(i);
i++;
}
//例题:猫抓耗子
//猫的重量为1,随机出现一只老鼠(重量)
//猫抓住老鼠就吃掉,猫的重量就增加老鼠的重量
//猫的重量超过了100,猫就撑死了
int cat=1;
int mouse=0;
int count=0;
while(cat<=100) {
mouse=(int)(Math.random()*9)+1;
cat+=mouse;
count++;
}
System.out.println("猫一共抓了"+count+"只老鼠");
3.do...while循环
至少执行一次(第一次肯定会执行)(执行一遍后在判断是否继续)
do {...
.... }while(true); //true死循环
4.逻辑控制语句
break;结束循环
continue; 结束本次循环
//例题:判断arr中有没有偶数
int[] arr=new int[20];
for(int j=0;j<arr.length;j++) {
arr[j]=(int)(Math.random()*100);
}
boolean bool=false;
for(int i=0;i<arr.length;i++) {
if(arr[i]%2==0) {
bool=true;
//终止循环(结束)(循环结束了)
break;
}
}
//求非偶数元素的和
int arr[]=new int[20];
for(int i=0;i<arr.length;i++) {
arr[i]=(int)(Math.random()*100);
}
int sum=0;
for(int i=0;i<arr.length;i++) {
if(arr[i]%2==0) {
//结束本次循环,立即执行下一次循环
continue;
}
sum+=arr[i];
}
//例题:68之内的因数 以及和
int i=68;
int j;
int s=0;
for(j=1;j<=68;j++) {
if(i%j==0) {
System.out.println(j);
s+=j;
}
}System.out.println(s);
//例题:50-100之间的因数之和
int s=0;
for(int i=50;i<=100;i++) {
for(int j=1;j<=i;j++) {
if(i%j==0) {
s+=j;
}
}
}System.out.println(s);
//完数:除自身之外所有的因数之和等于自身
//例题:打印出1000以内的完数
for(int i=2;i<=1000;i++) {
int s=0;
for(int j=1;j<i;j++) {
if(i%j==0) {
s+=j;
}
}
if(s==i) {
System.out.println(i);
}
}
//例题:打印1000以内的质数
boolean bool;
for(int i=2;i<=1000;i++) {
//判断i是否是质数?
//标记i是质数
bool=true;
for(int j=2;j<i;j++) {
//j代表可能被整除的数
if(i%j==0) {
bool=false;
break;
}
}
if(bool) {
System.out.println(i+"是质数");
}
}
二、方法
// 方法的定义
// public 访问权限修饰符
// static 静态的,类的
// void 返回值类型 void方法没有返回值
// main 方法名
// (参数部分) 参数列表 形参&实参
// {方法体}
public static void main(String[] args) {
public static void main(String[] args) {
//实参的个数和类型必须和形参对应
int sum=sum(2,3);//执行方法
System.out.println(sum);
}
//返回值类型的定义
//该方法必须返回一个该类型的值
static int sum(int a,int b) {
int sum=a+b;
return sum;
}
//例题:定义一个方法获取一个(整数)数组的最大值
static int max(int[] arr) {
int maxx=arr[0];
for(int i=1;i<arr.length;i++) {
if(arr[i]>maxx) {
maxx=arr[i];
}
}return maxx;
}
一个代码块中return是最后一行代码
//例题:定义一个方法获取两个值的最大值
//第一种方法
// static int max(int a,int b) {
// int max=a;
// if(b>max) {
// max=b;
// }
// return max;
// }
//第二种方法
// static int max(int a,int b) {
// int max;
if(a>b) {
max=a;
}else {
max=b;
}
return max;
//第三种方法
// static int max(int a,int b) {
// return a>b?a:b;
// }
//获取三个浮点型数值的最大值
static double maxx(double q,double w,double e) {
double maxx=q>w?q:w;
return maxx=maxx>e?maxx:e;
}
//返回一个数组中所有的偶数
public static void main(String[] args) {
int[] a= {1,2,3,4,5,6,7};
int[] b= even(a);
System.out.println(Arrays.toString(b));
}
static int[] even(int[] arr) {
int s=0;
int[] arrnew=new int[arr.length];
for(int i=0;i<arr.length;i++) {
if(arr[i]%2==0) {
arrnew[s]=arr[i];
s++;
}
}
int[] s1=new int[s];
for(int j=0;j<s;j++) {
s1[j]=arrnew[j];
}
return s1;
三、冒泡排序
public static void main(String[] args) {
int[] arr= {34,12,45,56,2,7,1};
//前后一次比较,将数值大的往后排
int temp;
boolean flag;
//确定元素的个数
for(int j=0;j<arr.length-1;j++) {
//-1最后一个不用比较 -j减少冗余
//将最大值放在最后位置
//没有发生过交换
flag=false;
for(int i=0;i<arr.length-j-1;i++) {
if(arr[i]>arr[i+1]) {
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
//发生交换了
flag=true;
}
}
if(!flag) {
System.out.println("已经排好了");
}
}System.out.println(Arrays.toString(arr));
}
//例题:定义一个方法,对一个数组进行排序(升序)
//冒泡排序
public static void main(String[] args) {
int[] b=new int[]{8,16,5,2,4};
int[] c=paixu(b);
System.out.println(Arrays.toString(c));
}
static int[] paixu(int[] arr) {
int a;
for(int j=0;j<arr.length-1;j++) {
for(int i=0;i<arr.length-1;i++) {
if(arr[i]>arr[i+1]) {
a=arr[i];
arr[i]=arr[i+1];
arr[i+1]=a;
}
}
}
return arr;
}
四、插入排序
public static void main(String[] args) {
int[] arr= {23,45,56,2,1,67,90,6};
for(int j=1;j<arr.length;j++) {
int temp=arr[j];
int i;
for(i=j-1;i>=0;i--) {
if(temp<arr[i]) {
arr[i+1]=arr[i];
}else {
arr[i+1]=temp;
break;
}
}
if(i==-1) {
arr[0]=temp;
}
}
System.out.println(Arrays.toString(arr));
}
例题:定义一个方法返回一个数组的去重部分
public static void main(String[] args)
int[] b=new int[]{8,16,5,2,4,4,16,8};
int[] c=quchong(b);
System.out.println(Arrays.toString(c));
}
static int[] quchong(int[] arr) {
int[] rez =new int[arr.length];//声明一个数组,长度为传入数组的长度
int a = 0;
int j=0;
boolean bool=true;
for (int i = 0; i < arr.length; i++) {
for(int t:rez) {
if(t==arr[i]) {
bool=false;
}
}
if(bool) {
rez[i]=arr[i];
j++;
}
}
int[] rezz =new int[j];
for(int s=0;s<j;s++) {
rezz[s]=rez[s];
}
return rezz;
}