当前位置: 首页 > 知识库问答 >
问题:

我试图合并到整数字符串,但博士Java我使用的程序不会让我使用ArrayUtils?

萧渝
2023-03-14

在本实验室中,您将创建一个程序,合并两个非负(等于或大于0)整数数组。您的程序将接受每个数组作为键盘的输入。您事先不知道将输入多少个值,但可以假定每个数组的最大长度为10000个元素。要停止输入值,请输入负数。您可以忽略输入的任何负数,而不将其存储在数组中。两个输入数组的元素应按递增顺序排列。换句话说,每个数组元素的值必须大于或等于前一个元素的值。数组可能包含重复的元素。输入两个数组后,程序必须检查以确保每个数组的元素都按顺序输入。如果发现无序元素,请打印消息“错误:数组顺序不正确”。您的任务是将两个输入数组合并成一个新数组,所有元素按从低到高的顺序排列。打印输入的每个原始数组,然后打印合并的数组。请注意,您的程序必须输出数组,每个数字之间只有一个空格。示例运行1:输入第一个数组的值,最多10000个值,输入负数退出

3
3
5
6
8
9
-1

输入第二个数组的值(最多10000个值),输入负数退出

3
4
5
6
-5

第一个阵列:

3 3 5 6 8 9 

第二个阵列:

3 4 5 6 

合并数组:

3 3 3 4 5 5 6 6 8 9

示例运行2:输入第一个数组的值,最多10000个值,输入负数退出

4
5
7
2
-1

输入第二个数组的值(最多10000个值),输入负数退出

3
3
3
3
3
3
-100

第一个阵列:

4 5 7 2 

第二个阵列:

3 3 3 3 3 3 

错误:数组顺序不正确

import java.io.*;
import static java.lang.System.*;

import java.util.Scanner;
import java.lang.Math;
import java.lang.Object;

import java.util.Arrays;
import java.util.ArrayList;
import org.apache.commons.lang3.ArrayUtils;



class Main
{

 public static void main (String str[]) throws IOException {
    {
        Scanner scan = new Scanner(System.in);

        int[] arrayone = new int[10000];
        int[] arraytwo = new int[10000];
        int [] mergeQ = new int[arrayone.length + arraytwo.length];
        int integers = 0;
        int inte = 0;


        System.out.println("\nEnter the values for the first array, up to 10000 values, enter a negative number to quit");

         for (int i = 0; i < arrayone.length; i++)
        {
            arrayone[i] = scan.nextInt();
            if (arrayone[i] < 0){
              break;
            } else {integers ++;}
        }


        System.out.println("\nEnter the values for the second array, up to 10000 values, enter a negative number to quit");
        for (int i=0; i<arraytwo.length; i++)
        {
            arraytwo[i] = scan.nextInt();

            if (arraytwo[i] < 0)
            {
                break;
            } {inte ++;}
        }


        System.out.println("First Array:");
        for (int i=0; i< integers; i++)
        {
          System.out.print(arrayone[i] + " ");
        }


        System.out.println("\nSecond Array:");
        for (int i=0; i< inte; i++)
        {
            System.out.print(arraytwo[i] + " ");
        }

      System.out.println("\nMerged Array:");{


        String[] both = ArrayUtils.addAll(arrayone[integer], arraytwo[inte]);
          Arrays.sort(both);

        }

        }
      }
    }

共有1个答案

司马庆
2023-03-14
you were adding elements but not the arrays themselves.

在你的第二圈

}{ inte++; }

把这个换成

}else {inte ++;}

一个解决方案可能是

int[] both = ArrayUtils.addAll(Arrays.copyOf(arrayone, integers), Arrays.copyOf(arraytwo,inte));
Arrays.sort(both);
for (int i=0; i< both.length; i++){
      System.out.print(both[i] + " ");

这是一个非常糟糕的方法...但是在你的CS课上会起作用

for (int i=0; i< integers; i++){
   mergeQ[i] = arrayone[i];
}
for (int i=integers; i< inte + integers; i++){
   mergeQ[i] = arraytwo[i - integers];
}
int both[] = Arrays.copyOf(mergeQ,integers+inte);
Arrays.sort(both);
for (int i=0; i< both.length; i++){
    System.out.print(both[i] + " ");
}

这是另一种方式,它稍微干净一点,但性能与上面的大致相同。。

System.arraycopy(arrayone, 0, mergeQ, 0, integers);
System.arraycopy(arraytwo, 0, mergeQ, integers, inte);
int both[] = Arrays.copyOf(mergeQ,integers+inte);
Arrays.sort(both);
for (int i=0; i< both.length; i++){
    System.out.print(both[i] + " ");
}
 类似资料:
  • 这是我的activity_main.xml文件 这是我的build.gradle(模块:app)文件

  • 我开始学习android,我的第一个练习是计算器。在做适当的计算器之前,我计划创建一个非常基本的应用程序,用户只需通过EditText输入2个数字,用按钮选择算术运算,并在按下“igual”按钮时在TextView中获得结果。 我的想法是声明2个字符串(sinput1 在我开始编写操作的工作方式之前,所有布局看起来都运行良好,但是每次我运行应用程序(使用手机或模拟器)时,当我按EditText输入

  • 这是我的主人档案 我的命令是: 我不断得到: ansible_host=xx.xxx.xxx.xx|遥不可及!=

  • 我在名为的类中有一个链表,它包含以下属性: 我有另一个类,它是“实际列表”,它只包含对列表头部的引用,这个类被称为“文本列表”,它接收一个字符串,并假设将该字符串的每个单词排序在列表中。例如,对于句子: 链接列表如下所示: 箭头就像指向列表中下一个节点的指针。 我想先把所有的单词放在一个链表中(类),然后做一个MERGE SORT来对链表中的单词进行排序。 我想做的是采用拆分方法将列表拆分为两个列

  • 这是我的课本上的一个代码示例,我试图运行它,但它无法运行。这就是错误: 我不明白为什么它是错误的,因为主类在start类之外,在extenses应用程序内部。这是直接来自一本书,我只是想知道为什么它不会运行。