我有这个问题。我需要使用数组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>
答案 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];