要拿出来的数组不是数字,而是类似于一段字符串,想知道怎么转换为数字

问题遇到的现象和发生背景

验证二分法是真的正确,所以用暴力遍历和二分法同时处理数组,查看二分法是否编写正确

问题相关代码,请勿粘贴截图

package cn.Text;

import java.util.Arrays;

/**

  • 二分法

  • 一次找一半,比较找位置/数字(num) 保证有序

  • 注:我们中点位置一般去上中点

  • 135679 上中点为5

  • /
    public class Dichotomy {
    //TODO 二分法查找
    public static boolean find(int[] arr,int num){

      //边界条件
      if((arr==null)||(arr.length==0)){
          return false;
      }
      //左边界
      int L=0;
      //有边界
      int R=arr.length-1;
      /**
       * arr的[L...........R]之间查找一个数num
       */
      while(L<=R){
          int media=(L+R)/2;
          if(arr[media]==num){
              return true;
          }
          else if(arr[media]<num){
              L=media+1;
          }
          else{
              R=media-1;
          }
      }
      return false;
    

    }

    //TODO 遍历,暴力方法解决
    public static boolean test(int[] sortedArr, int num) {

      for (int cur : sortedArr) {
          if (cur == num) {
              return true;
          }
      }
      return false;
    

    }

    public static int[] generateRandomArray(int maxSize, int maxValue) {

      int[] arr = new int[(int) ((maxSize + 1) * Math.random())];
      for (int i = 0; i < arr.length; i++) {
          arr[i] = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
      }
      return arr;
    

    }

    public static void main(String[] args) {

      int testTime = 500000;
      int maxSize = 10;
      int maxValue = 100;
      boolean succeed = true;
      for (int i = 0; i < testTime; i++) {
          int[] arr = generateRandomArray(maxSize, maxValue);
          System.out.println(arr);
          Arrays.sort(arr);
          int value = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
          if (test(arr, value) != find(arr, value)) {
              System.out.println("出错了!");
              succeed = false;
              break;
          }
      }
      System.out.println(succeed ? "Nice!" : "Fucking fucked!");
    

    }
    }

运行结果及报错内容

运行正确,就是不知道怎么转换为数字

img

我的解答思路和尝试过的方法
我想要达到的结果

两个一样的,说明二分法正确,我想知道数组怎么打印出

img

system.out.println(arr[i]);吧应该是

如果要打印数组内的所有元素,需要调用它的toString方法。这里你把相应的println语句换成Arrays.toString(数组名)就OK了

你数组里装的本质上就不是数字,怎么可能转换成数字
除非你把前面的[I@都不要了
后面的按16进制转

计算机上的任何数据其实都是数字。只是根据不同规则显示在屏幕上而已。