基于旧的数组填写java中的新数组

时间:2014-05-10 02:58:07

标签: java arrays methods int

我有这个问题。我需要使用数组x并将其转换为数组y而不使用某些方法。

示例时间:

int[] newArr = new int[5];
newArr[0] = -2;
newArr[1] = 4;
newArr[2] = 2;
newArr[3] = 2;
newArr[4] = 5;

给出了

arr = {-2, 4, 2, 2, 5};

我需要把它变成

newArr = {-2, -1, 0, 1, 2, 3, 4, 3, 2, 2, 3, 4, 5};

我不允许使用Array,ArrayList和Vector。到目前为止我所拥有的是:

public static void fillArray(int[] numbers){
    int length = numbers.length;
    for(int i = 0; i < numbers.length - 1; i++){
        if(numbers[i] < numbers[i + 1]){
            length += numbers[i + 1] - numbers[i] - 1;
        }else if(numbers[i + 1] < numbers[i]){
            length += numbers[i] - numbers[i + 1] - 1;
        }
    }
    System.out.println();
    System.out.println(length);
    int[] newArr = new int[length];

这给了我需要制作的新数组的长度。

我的问题是如何填写新阵列,或者我可以使用哪些概念?

现在是的,这是我正在服用的00设计课程的一部分。不,我没有找到答案。我正在寻找我可以在我的代码中实现的想法(if-statements,for-loops等等)以及我将使用它们的内容。与你们中的很多人(我在这里概括)不同,我不是程序员或编程领域的技术人员。我参加这个课程是因为我的化学工程专业需要这个课程,这个专业在用Java编程方面做得不多。因此,我知道我必须做什么,我只是不知道自己的语法是否足够自己这样做,这就是为什么我会向你们所有人提出想法(不是答案)的原因。对我来说和为什么(即填写数组)我会使用它们。我早些时候问了一个类似的问题,人们生我的气,说我只是在寻找答案而且我是leecher,我不是一个leecher,这就是为什么我不寻找答案并且不得不重新问这个,但我是编程的新手。帮帮你新手吗?地板是你的......

编辑:我也忘了提及我不知道传入的数组,我只是举了一个例子,所以立即将这些数字放入我的新数组中是不切实际的。< / p>

4 个答案:

答案 0 :(得分:0)

好吧,我会这样做。

for(int i=0;i<newArr.length;i++){
if(element !in oldArr){
   newArr[i] = i
}else{
 newArr[i] = oldArr[element]
}
 }

答案 1 :(得分:0)

如果我正确地理解了你的问题,你正在尝试制作一个新的数组,填补从旧数组的最小数字开始并以新数组的最大数字结尾的空白。

因此,首先需要找到该数组中的最低元素。

其次,找到最高的数字。

第三个找到长度。长度将是最高和最低之间的差异,然后加1。 abs(最高 - 最低) - 1 abs是绝对值,最高和最低当然是整数

最后使用for循环(或任何你喜欢的)来填充数组。应该有两个数字递增。对于数组的索引,另一个用于数组中元素的值;它应该从最低点开始并以1为增量。这应该填满阵列。

我希望这很清楚。既然你说过你不想要答案而是想法,我只是向你解释并留给你找出代码。

答案 2 :(得分:0)

我想我现在了解你。

既然你说你已经找出了长度的代码,下一步就是填充数组:

你将有一个嵌套循环。外环将具有i

内部循环将跟踪当前元素(j)和下一个元素(j + 1),因此创建另一个执行此操作的变量。您将不得不计算它是否小于或等于(如果语句)。如果它小于那个内部循环将运行,直到它到达该元素。如果它更大,显然相反。整个循环应该在新数组的整个长度上运行

这应该填补空白

答案 3 :(得分:0)

这是我的方法,按照你的描述工作。

int j = 0;
int[] newArr = new int[]{ -2, 4, 2, 2, 5};
int[] values = new int[13]; // length equals the count you calculated
for (int i = 0; i < newArr.length - 1; i++) {
   int currentNumber = newArr[i];
   int nextNumber = newArr[i+1];
   boolean ascending = currentNumber < nextNumber;
   values[j++] = currentNumber;
   if (ascending) {
      for (int k = 1; k < nextNumber - currentNumber; k++)
      {
         values[j++] = currentNumber + k;
      }
   } else {
      for (int k = 1; k < currentNumber - nextNumber; k++)
      {
         values[j++] = currentNumber - k;
      }
   }
}
values[j++] = newArr[newArr.length - 1];