我不清楚这要求我做什么,以及我如何执行它,参考 int [] copyAndReplaceLessThan(int [] a,int b)方法。非常感谢任何帮助,谢谢。
在main中测试此方法。打印原始数组和方法copyAndReplaceLessThan返回的返回数组。由于此方法返回一个值(整数数组),因此需要在调用方法(main)中的“本地变量(类型为int [])”中“捕获”返回的值。
例如:假设您将数组“x”传递给方法并使用数组“y”来捕获返回的值。在调用方法之前打印x,然后在调用方法后打印x和y。
public class ArrayExamples{
public static void swapInts(int a, int b){
int temp;
temp = a;
a = b;
b = temp;
}
public static void swapIntArrays(int [] a, int [] b){
int x;
for (int i=0; i<a.length; i++){
x = a[i];
a[i]=b[i];
b[i]=x;
}
}
public static void printArray(int[] a){
for(int i = 0; i < a.length; i++)
{
System.out.print(a[i] + " ");
}
System.out.println("");
}
public static void main(String args[]){
int [] one ={3,4};
int [] two ={7,8};
printArray(one);
printArray(two);
swapIntArrays(one,two);
printArray(one);
printArray(two);
System.out.println();
int [] x ={3,45,17,2,-1,44,9,23,67,2,-6,-23,-100,12,5,1212};
int b = 12;
printArray(x);
replaceLessThan(x,b);
printArray(x);
printArray(x);
copyAndReplaceLessThan(x,b);
printArray(x);
printArray(y);
}
public static void replaceLessThan(int []a, int b){
for(int i=0; i < a.length; i++){
if(a[i] < b){
a[i] = b;
}
else{
a[i] = a[i];
}
}
}
public static int[] copyAndReplaceLessThan(int []a, int b){
int []x = a;
int[]y = x;
for(int i=0; i < a.length; i++){
if(a[i] < b){
a[i] = b;
y[i] = b;
}
else{
a[i] = a[i];
y[i] = a[i];
}
}
return y;
}
}
答案 0 :(得分:0)
一些问题:
您应该保持原始数组不变,但您要使用
设置其元素a[i] = b;
没有必要这样做
a[i] = a[i];
因为您只是将值重置为自身。
但是你最大的问题是你不创建一个新阵列,正如你应该的那样。相反,你的&#34;新&#34;数组(y
)指的是原始数据(a
),因此对y
的任何更改实际上都是在原始数据中进行的。
我还建议您为a
测试或尝试null
。
答案 1 :(得分:0)
public static int[] copyAndReplaceLessThan(int[] a, int b)
{
int[] x = a.clone();
for (int i = 0; i < x.length; i++)
{
if (x[i] < b)
{
x[i] = b;
}
}
return x;
}