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

前言

坚持就是胜利!!!!


一.循环

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

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

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

  • 33
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值