RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1361199
Accepted
Charismatic
Charismatic
Asked:2022-05-15 13:53:25 +0000 UTC2022-05-15 13:53:25 +0000 UTC 2022-05-15 13:53:25 +0000 UTC

通过从数组中删除 [a,b] 范围内的所有元素来压缩数组,并用零填充释放的元素。JAVA

  • 772
public class DeleteArray {

    public static void main(String[] args) {
        Random rand = new Random();
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите размер массива - ");
        int x = scan.nextInt();
        int []  arr = new int[x];
        int [] arr1 = null;
        System.out.println("Введите значение a - ");
        int a = scan.nextInt();
        System.out.println("Введите значение b - ");
        int b = scan.nextInt();
        for (int i = 0;i< arr.length;i++) {
            arr[i] = rand.nextInt(10)+5;
        }
        System.out.println("" + Arrays.toString(arr));
        for (int i = 0; i < arr.length; i++) {
            if (i>=a && i<=b) {
                arr[i] = arr[i+1];
                arr[i] = 0;
            }
        }
        System.out.println("" + Arrays.toString(arr));
    }
}
java
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    MBo
    2022-05-15T14:59:13Z2022-05-15T14:59:13Z

    看这里(测试ideone)(更正了从问题中复制的错误)

    int a = 4;
        int b = 6;
        int[] arr = {5,7,0,1,2,8,4};
        int abcount = 0;
        for (int i = 0; i < arr.length; i++) {
          if (arr[i]>=a && arr[i]<=b) //этот элемент не нужен, с ним ничего делать не нужно
              abcount++; 
          else 
             arr[i-abcount] = arr[i];  //а нужный ставим на финальную позицию
        }
        
        for (int i = arr.length - abcount; i < arr.length; i++)
           arr[i] = 0;
           
         System.out.println("" + Arrays.toString(arr));  
    
        >>[7, 0, 1, 2, 8, 0, 0]
    
    • 3
  2. Nowhere Man
    2022-05-15T15:34:52Z2022-05-15T15:34:52Z

    在源代码中,需要检查数组中的值是否属于某个范围,而不是其索引。

    这里主要是输入j最后一个正确元素的单独索引,同时通过数组,跳过排除范围内的数字,通过索引写入“合适”的值j并递增它。最后,从索引开始用零填充尾部j(尽管对于真正的压缩,您应该将数组复制到较小的一个并丢弃零)。

    int j = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] < a || arr[i] > b) { // инвертировать условие
            arr[j++] = arr[i]; // перенести число, не входящее в исключаемый диапазон
        }
    }
    while (j < arr.length) {
        arr[j++] = 0;
    }
    System.out.println(Arrays.toString(arr));
    

    结果为a = 7, b = 10;

    [0, 9, 9, 10, 10, 11, 0, 11, 6, 8, 12, 10, 6, 7, 11, 6]
    [0, 11, 0, 11, 6, 12, 6, 11, 6, 0, 0, 0, 0, 0, 0, 0]
    
    • 2
  3. xerx593
    2022-05-15T17:05:30Z2022-05-15T17:05:30Z

    试试这个(嵌入式评论):

    package demo;
    
    import java.io.PrintStream;
    import java.nio.charset.StandardCharsets;
    import java.util.Random;
    import java.util.Scanner;
    
    public class DeleteArray {
    
      static final int N = 10;
    
      public static void main(String[] args) {
        Random rand = new Random();
        Scanner scan = new Scanner(System.in);
        // вывод в UTF-8:
        PrintStream ps = new PrintStream(System.out, false, StandardCharsets.UTF_8);
        ps.println("Границы массива:");
        int low = scan.nextInt();
        int high = scan.nextInt();
        assert (low != high); // проверка параметров!!
        if (low > high) { // <- для "чайников"
          int tmp = low;
          low = high;
          high = tmp;
        }
        // генерируем "массив":
        int[] arr = new int[N];
        for (int i = 0; i < arr.length; i++) {
          // arr(i) := случайное число в [low - high]
          arr[i] = rand.nextInt(high - low) + low;
          // ... и вывод:
          ps.format("%d ", arr[i]);
        }
        ps.println();
    
        ps.println("Удалить элементы в интервале:");
        low = scan.nextInt();
        high = scan.nextInt();
        // тоже самое:
        if (low > high) { // <- для "чайников"
          int tmp = low;
          low = high;
          high = tmp;
        }
        // инициализация:
        int m = N; // "размерность массива", изначально: N
        int i = 0; // "курсор"
        while (i < m) {// В цикле перебираем элементы массива, начиная с первого.
          if (arr[i] <= high && arr[i] >= low) {  // При обнаружении элемента, принадлежащего удаляемому интервалу:
            // размерность массива уменьшаем на единицу:
            m--;
            // остальную (правую) часть массива сдвигаем на одну ячейку в лево
            for (int j = i; j < m; j++) {
              arr[j] = arr[j + 1];
            }
          } else { // При "не-обнаружении", просто двигаем курсор:
            i++;
          }
        }
        // следует заполнить конец массива нулями от элемента с индексом на единицу больше новой размерности массива до количества элементов в «старом» массиве:
        for (i = m; i < N; i++) {
          arr[i] = 0;
        }
        // вывод:
        for (i = 0; i < N; i++) {
          ps.format("%d ", arr[i]);
        }
        ps.println();
        // 
      }
    }
    

    给出,例如:

    Границы массива:
    -10
    10
    -4 -2 -4 9 -1 -10 3 -10 1 0
    Удалить элементы в интервале:
    -3
    3
    -4 -4 9 -10 -10 0 0 0 0 0
    

    ideone

    • 1

相关问题

  • wpcap 找不到指定的模块

  • 如何以编程方式从桌面应用程序打开 HTML 页面?

  • Android Studio 中的 R.java 文件在哪里?

  • HashMap 初始化

  • 如何使用 lambda 表达式通过增加与原点的距离来对点进行排序?

  • 最大化窗口时如何调整元素大小?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5