JAVA刷题之循环与数组(力扣经典算法)

avatar
作者
筋斗云
阅读量:0

前言

坚持就是胜利!!!!


一.循环

1.1无限循环和高级控制语句

无限循环

for(;;){

System.out.println("我爱学习");

}

while(true){

System.out.println("我爱学习");

}

do{

System.out.println("我爱学习");

}while(true);

跳转控制语句

1.题目一:小老虎吃包子

 public class Solution {     public static void main(String[] args) {         for(int i=0;i<5;i++){             if(i==3){                 continue;                 //结束本次循环,继续下次循环             }             System.out.println("小老虎吃第"+i+"个包子");         }     }   } 

输出结果:

讲解

continue结束本次循环,继续下次循环

2.题目:有5个包子,但是小老虎只吃两个
public class Solution {     public static void main(String[] args) {         for(int i=0;i<5;i++){             if(i==3){                break;                 //结束整个循环             }             System.out.println("小老虎吃第"+i+"个包子");         }     }  

输出结果

讲解

break 是跳出整个循环

1.2练习

练习一:求平方根

键盘录入一个大于2的整数x,计算并返回x的平方根,结果只保留学整数部分,小数部分舍去

解题思路

代码实现

import java.util.Scanner; public class Solution {     public static void main(String[] args) {        //平方根         //eg:1.21         //1*1=1; 2*2=2;->若i*i>1.21,则返回i-1;         //若i*i=1.21;则返回i;          Scanner sc=new Scanner(System.in);         int number=sc.nextInt();         for(int i=0;i<100;i++){             if(i*i>number){                 System.out.println("他的平方根是"+(i-1));                 break;             }             if(i*i==number){                 System.out.println("他的平方根是"+i);                 break;//结束程序运行             }         }     }

输出结果

练习二:猜数字小游戏

系统自动生成1~100的随机数,设计程序推算出这个数是多少

思路:

使用Random来随机生成数

采用无限循环:while(true){

};来循环输入猜测

(1)若输入值比随机的生成值大,则输出大了

(2)若输入值比随机的生成值小,则输出小了

(3)若输入值与随机的生成相等,则输出猜对了,退出循环

论如何使用Random

如要求生成1~100的随机数:(等于(0~99)+1)

即int number=rand.nextInt(99)+1;

代码实现:

import java.util.Scanner; import java.util.Random;  public class Solution {     public static void main(String[] args) {         Random rand=new Random(); //1.生成1~100的随机数         int number=rand.nextInt(99)+1;         System.out.println("随机数是"+number);          while (true) { //2.循环输入         Scanner sc=new Scanner(System.in);         int num=sc.nextInt(); //3.判断数的大小         if(num>number){             System.out.println("该数大了");         } else if (num< number) {             System.out.println("该的数小了");         }else {             System.out.println("猜对了");             System.out.println("这个数是"+num);             break;         }}     }   } 

输出结果

二.数组

数组要求必会操作:

练习一:求和

生成十个1~100的随机数存入数组,并求和

代码实现:

import java.util.Random;  public class StringTomrs {     public static void main(String[] args) {         int sum=0; //定义一个数组         int[] arr=new int[10];          Random rand=new Random();  //1.每循环一次,就会生成一个新的随机数          for(int i=0;i<10;i++){              arr[i]=rand.nextInt(99)+1;         }          for (int i = 0; i < arr.length; i++) {             System.out.println("输入的数为"+arr[i]);         }          //2.求和         for(int j=0;j<arr.length;j++){             sum+=arr[j];         }         System.out.println("求和值为"+sum);     }   }

输出结果

练习二:交换数组

定义一个数组,将1,2,3,4,5存入数组中,并输出5,4,3,2,1

解题思路:

设置i和j,分别指向头和尾,交换头值与尾值,直到i=j结束。

代码实现

public class Solution {     public static void main(String[] args) {        int[] arr={1,2,3,4,5};       int temp=0;       for(int i=0,j=arr.length-1;i<j;i++,j--){           temp=arr[i];           arr[i]=arr[j];           arr[j]=temp;        }       for(int i=0;i<arr.length;i++){           System.out.println(arr[i]+" ");       } }}

解体思路二:

不设置j,j=arr.length-1,后继续使用上述思路

public class Solution {     public static void main(String[] args) {        int[] arr={1,2,3,4,5};       int temp=0;           for(int i=0;i<(arr.length-1)/2;i++){             temp=arr[i];             arr[i]=arr[arr.length-i-1];             arr[arr.length-i-1]=temp;          }         for(int i=0;i<arr.length;i++){             System.out.println(arr[i]+" ");         }      }   }

输出结果

练习三:打乱数组

定义一个数组,存入1~5,要求打乱数组中的所有内容

解体思路

每循环一次,随机生成一个索引

索引每次和数组元素呼唤,循环次数就是数组元素个数

注意,由于随机生成的是索引,即数组下标,所以在互换时使用arr[num];

代码实现

import java.util.Random;  public class Solution {     public static void main(String[] args) {        int[] arr={1,2,3,4,5};       int temp=0; Random rand=new Random();           for(int i=0;i<arr.length;i++){          //每循环一次,随机生成一个索引           int num=rand.nextInt(arr.length);           //索引每次和数组元素呼唤,循环次数就是数组元素个数             temp=arr[i];             arr[i]=arr[num];             arr[num]=temp; //注意,由于随机生成的是索引,即数组下标,所以在互换时使用arr[num];         }         for(int i=0;i<arr.length;i++){             System.out.print(arr[i]+" ");         }      }   } 

输出结果

三.方法

设计一个方法用于数组的 遍历,输出结果在同一行

练习一

思路:1.我要干嘛: 遍历数组
           2.我感到这件是需要什么才能完成? 数组
           3.方法的调用是否需要继续使用结果: 不需要
 

  public class Solution {     public static void main(String[] args) { //定义数组     int[] arr={1,2,3,4,5}; //调用数组     PrintArr(arr);     }      public static void PrintArr(int[] arr){         for(int i=0;i<arr.length;i++){             System.out.print(arr[i]+",");  //注意:println带换行功能;print不带换行功能          }     } } 

练习二:卖飞机票

巧用快捷键

Ctrl+Alt+m==抽取方法

 public class Solution {     public static void main(String[] args) {          //1.定义         Scanner sc=new Scanner(System.in);         int price=0;         int price1=0;//折后价         price=sc.nextInt();         int month=0;         month=sc.nextInt();         //2.是经济舱还是头等舱         System.out.println("请选择头等舱 0,经济舱 1");         int seat=sc.nextInt();                //3。判断是旺季还是淡季         if(5<=month &&month<=10) {             System.out.println("是旺季"); //调用方法,算出折后价             price1 = getPrice1(seat, price1, price, 0.9, 0.85);         }         else{             System.out.println("是淡季"); //调用方法,算出折后价             price1 = getPrice1(seat, price1, price, 0.7, 0.65);         }                 //5.计算票价         System.out.println("最后的票价是"+price1);      }   //思路:1我要干嘛     //2.我感到这件是需要什么才能完成?      //3.方法的调用是否需要继续使用结果  //3=4。设置方法计算折后价      private static int getPrice1(int seat, int price1, int price, double x, double x1) {         if(seat ==0){             price1 =(int)(price * x);          }else{             price =(int)(price * x1);         }         return price1;     }       }

输出结果

练习三:开发验证码

思路:

代码实现

import java.util.Scanner; import java.util.Random;   public class Solution {     public static void main(String[] args) {          //1.将大写字母与小写字母存放在一个数组中         char[] arr=new char[52];          // 存放小写字母         for(int i=0;i<26;i++){             arr[i]=(char)(i+79);         }         for(int i=26;i<arr.length;i++){         arr[i]=(char)(i+39);}          //2.随机抽取四位字母         Random rand=new Random();         for(int i=0;i<4;i++){         int num=rand.nextInt(arr.length);         String secreat=" "+arr[num];             System.out.print(secreat);}         //3.随机生成一位数字         int num=rand.nextInt(10);           //4。将生成的数字加入字符         String secreat=" "+num;         System.out.println(secreat);     }

输出结果:


到这里竹竹零就要和大家说再见了,希望时光不负赶路人,愿我们做最好的自己!!

9a90bc9fb4c3409c9569951569288f5a.png

如果您觉得有失偏颇请您在评论区指正,如果您觉得不错的话留个好评再走吧!!

您的鼓励就是对我最大的支持!  ! !

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!