基本上,我得到了一系列数字,我必须计算所有负数。 然后创建一个包含前一个正数的新数组,数组的长度为firstarray-numberOfNegatives
这是我的代码:
public void removeNegatives()
{
int numberOfNegative = 0;
for(int i = 0; i < numbers.length-1; i++)
{
if (numbers[i] < 0) numberOfNegative++;
}
int [] numbers2 = new int[numbers.length-numberOfNegative];
int count = 0;
for(int i = 0; i < numbers2.length; i++)
{
if (numbers[count] > 0) numbers2[i] = numbers[count];
count++;
System.out.println(numbers2[i]);
}
numbers = numbers2;
}
我收到了错误的结果:负数被替换为0
答案 0 :(得分:1)
首先写i < numbers.length;
或i <= numbers.length-1;
而不是i < numbers.length-1;
然后修复代码。
另请注意,您的'numbers'数组中可以有零,因此在if()in first()中,你应该写&lt; = 0而不是&lt; 0
for(int i = 0; i < numbers.length; i++)
{
if (numbers[i] > 0) numbers2[count] = numbers[i];
count++;
System.out.println(numbers2[count-1]);
}
答案 1 :(得分:1)
首先:你的第一个for循环中有一个off-by-one错误。在脑袋或纸上浏览一些小的示例阵列,你会看到。
其次:我认为你在第二部分中使用了两个索引计数器。 count
应该在您的新数组中使用,i
在旧数组中使用。
答案 2 :(得分:1)
public void removeNegatives()
{
int numberOfNegative = 0;
for(int i = 0; i < numbers.length; i++) //
{
if (numbers[i] < 0) numberOfNegative++;
}
int [] numbers2 = new int[numbers.length-numberOfNegative];
int count = 0;
for(int i = 0; i < numbers.length; i++)
{
if (numbers[i] >= 0) numbers2[count++] = numbers[i]; //
}
numbers = numbers2;
}
答案 3 :(得分:0)
需要在第二遍中反转您的索引变量。第一个循环还有长度-1而不是长度。 第二个循环应该超过原始数组的全长而不是结果数组。
public void removeNegatives()
{
int numberOfNegative = 0;
for(int i = 0; i < numbers.length; i++)
if (numbers[i] < 0)
numberOfNegative++;
int [] numbers2 = new int[numbers.length-numberOfNegative];
int count = 0;
for(int i = 0; i < numbers.length; i++)
{
if (numbers[i] >= 0) {
numbers2[count] = numbers[i];
System.out.println(numbers2[count]);
count++;
}
}
numbers = numbers2;
}
答案 4 :(得分:0)
运行调试器并观察此行... -1是可疑的
for(int i = 0; i < numbers.length-1; i++)
:)
答案 5 :(得分:0)
在
for(int i = 0; i < numbers2.length; i++)
{
if (numbers[count] > 0) numbers2[i] = numbers[count];
count++;
System.out.println(numbers2[i]);
}
numbers = numbers2;
}
您正在迭代多次,因为数字2有位置,但是,无论您是否为正数提供资金,您都会在每次传递(在for循环中)中增加i。因此,你的输出arrray会有第一个number2.length正整数的数字与一堆0交错!