基于循环和随机数的数组运用

案例一、二维数组的遍历

代码

package com.zhbit.leetcode_testsum.algorithmic;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class Traverse {
    @GetMapping("/traverse")
    /**
     * 二维数组的遍历
     */
    public void traverse(){
        int[][] array = new int[][]{{2,3},{4,5,6},{7,8,9,0}};
        for (int i=0;i<array.length;i++){
            int[] arr = array[i];
            for (int j=0;j<arr.length;j++) {
                int x = arr[j];
                log.info("{}",x);
            }
            System.out.println();
        }
    }

}

外层循环控制第几个小数组,内层循环控制小数组中的第几个数

案例二、用随机数生成一个数组

代码

package com.zhbit.leetcode_testsum.algorithmic;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class RandomArray {
    //生成随机数并赋给数组的方法
    public int[] randomArray(){
        //声明一个数组
        int[] arrray = new int[10];
        //声明循环变量i
        for (int i=0;i<arrray.length;i++){
            //生成1到10的随机数并强转型为int型然后赋值给被声明的整形变量result
            int result = (int)(Math.random()*10+1);
            //将随机数result放入数组
            arrray[i] = result;
        }
        log.info("随机数组为{}",arrray);
        return arrray;
    }
}

定义一个长度为10的数组,生成10个随机数并放入数组

案例三、综合应用

1.生成一个长度为10的随机数组nums
2.给定一个值target,当nums中任意两数之和等于target时,将这两数在数组中的下标存入新数组arr中。
3.定义一个二维数组array,用来存放所有满足条件的一维数组arr并输出结果

代码(随机数生成数组的代码在上面)

package com.zhbit.leetcode_testsum.algorithmic;

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Component
@Slf4j
public class SumVerify {
    @Autowired
    private RandomArray randomArray;
    @GetMapping("/sum")
    public  int[][] verifySum() {
        int[] nums = randomArray.randomArray();
        log.info("随机数组是{}",nums);
        int targer = 12;
        //循环变量ijhk,二维数组长度变量x,定位小数组在二维数组的下标n
        int i, j,h,k, x = 0 , n = 1;
        for (i = 0; i < nums.length; i++) {
            for (j = i + 1; j < nums.length; j++) {
                if (nums[i] + nums[j] == targer) {
                    x = x + 1;
                }
            }
        }
        log.info("x变量的值{}",x);
         int[][] array =new int[x][2];
        // 外循环,定义i=0即第被加数为数组nums的第一个数,当被加数在数组中时在内循环为他寻找加数
        //当被加数和数组中所有加数运算完成后,i自增,被加数变为数组中第二个数,重复运算
        for (k = 0; k < nums.length; k++) {
            // 内循环,定义加数j为数组i后面的一个数,当加数也在数组内时,加数和被加数相加,若相加之和
            // 与targer相等记录加数和被加数在nums数组中的位置:i,j并将其赋给二维数组result,返回得到的
            //数组result。
            for (h = k + 1; h < nums.length; h++) {
                if (nums[k] + nums[h] == targer) {
//                    int[][] arrayResult = new int[n][2];
                    int[] arr = array[n - 1];
                    arr[0] = k;
                    arr[1] = h;
                    n = n + 1;
                    log.info("数组{}", arr);
//                    log.info("数组{}", array[n - 1]);
                }
            }
        }
        log.info("数组 to String:{}", JSONObject.toJSONString(array));
        return array;
    }

}

tip:因为二维数组的长度不确定,因此我们需要先通过循环确定有多少个符合条件的一维数组要存放进二维数组array。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第四天 数组【悟空教程】 第04天 Java基础 第1章数组 1.1数组概念 软件的基本功能是处理数据,而在处理数...
    Java帮帮阅读 1,618评论 0 9
  • 方法1 (数据类型)(最小值+Math.random()*(最大值-最小值+1)) 例: (int)(1+Math...
    GB_speak阅读 41,226评论 2 6
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 我们在学习web前端的路程起步时总是疑问,我们如何更好的遍历元素呢?迭代器和生成器是什么?今天为大家带上与精彩的E...
    侬姝沁儿阅读 3,384评论 0 6
  • 那个女孩追赶着,鸽子小姐惊慌失措,摇摇晃晃,有趣极了,我静静的看着这一切,转眼间,女孩离开了,我默默的站在那里,不...
    杨啸啸阅读 99评论 0 0