Java 从给定数组创建逆序数组
我有一个赋值来创建一个类,在这个类中我创建了一个大小为10的数组,称为Java 从给定数组创建逆序数组,java,arrays,Java,Arrays,我有一个赋值来创建一个类,在这个类中我创建了一个大小为10的数组,称为source,并将0-10范围内的随机整数赋值给其中的所有索引,然后调用一个方法,以相反的顺序创建一个新数组。我尝试了下面的代码: public class Exercise7_4 { // reverse array method public static int[] reverseArray(int[] arr) { int[] reverse = new int[arr.length]
source
,并将0-10范围内的随机整数赋值给其中的所有索引,然后调用一个方法,以相反的顺序创建一个新数组。我尝试了下面的代码:
public class Exercise7_4 {
// reverse array method
public static int[] reverseArray(int[] arr) {
int[] reverse = new int[arr.length];
for (int i = 0; i < reverse.length - 1; i++) {
reverse[i] = arr[arr.length - 1 - i];
}
return reverse;
}
// print array in ascending order
public static void printArray(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
System.out.printf("%d\t", arr[i]);
}
System.out.println();
}
public static void main(String[] args) {
int[] source = new int[10];
for (int i = 0; i < source.length - 1; i++) {
source[i] = (int) (Math.random() * 10 + 1);
}
int[] reverse = reverseArray(source);
printArray(source);
printArray(reverse);
}
}
也就是说,由于某种原因,reverseArray
方法无法在reverse[0]
上正常工作
我想知道为什么会发生这种情况,以及我如何解决它。
提前谢谢 更改
反转array
功能如下:
public static int[] reverseArray(int[] arr) {
int[] reverse = new int[arr.length];
for (int i = 0; i < reverse.length; i++) {
reverse[i] = arr[arr.length - i];
}
return reverse;
}
在这里,您也不需要从
源代码执行-1
。长度更改reversearlay
功能,如下所示:
public static int[] reverseArray(int[] arr) {
int[] reverse = new int[arr.length];
for (int i = 0; i < reverse.length; i++) {
reverse[i] = arr[arr.length - i];
}
return reverse;
}
在这里,您也不需要从源代码执行-1
。length
更改所有for循环
for (int i = 0; i < source.length - 1; i++)
for(int i=0;i
到
for(int i=0;i
您的反向方法完全正确(如果更改循环)。您犯的错误是创建了一个大小为10的数组,其中填充了9个随机值(因此索引10的值将为0)。将所有for循环从
for (int i = 0; i < source.length - 1; i++)
for(int i=0;i
到
for(int i=0;i
您的反向方法完全正确(如果更改循环)。您犯的错误是,您创建了一个大小为10的数组,其中填充了9个随机值(因此,索引10的值将为0)。您可以检查在for循环的每次迭代中参考了哪个索引
这是你的解决方案
for (int i = 0; i < reverse.length - 1; i++) {
System.out.println("" + i + " " + (reverse.length - 1 - i));
}
“i”没有得到值9,(reverse.length-1-i)没有得到值0
更改此测试的测试条件:
i < reverse.length
您可以检查在for循环的每次迭代中引用的索引
这是你的解决方案
for (int i = 0; i < reverse.length - 1; i++) {
System.out.println("" + i + " " + (reverse.length - 1 - i));
}
“i”没有得到值9,(reverse.length-1-i)没有得到值0
更改此测试的测试条件:
i < reverse.length
包com.test
公营索塔雷酒店{
private int[] getSortedArry(int[] arr){
int arrLen = arr.length;
int reversedArry[] = new int[arrLen];
System.out.println("array lenght: " +arr.length);
int j = 0;
for(int i=arrLen-1; i>=0; i--){
reversedArry[j] = arr[i];
j++;
}
System.out.print("\n");
return reversedArry;
}
public static void main(String[] args){
int arr[] = {10,2,3,4,5,12,23,43,45,65};
SortArray sortArray = new SortArray();
int reversedArry[] = sortArray.getSortedArry(arr);
for(int i=0;i<reversedArry.length;i++){
System.out.print(reversedArry[i] + " ");
}
}
private int[]getsortedary(int[]arr){
int arrLen=arr.length;
int reversedArry[]=新int[arrLen];
System.out.println(“数组长度:“+arr.length”);
int j=0;
对于(int i=arrLen-1;i>=0;i--){
反向ARRY[j]=arr[i];
j++;
}
系统输出打印(“\n”);
反向收益率;
}
公共静态void main(字符串[]args){
int arr[]={10,2,3,4,5,12,23,43,45,65};
SORTARAY SORTARAY=新SORTARAY();
int reversedArry[]=sortArray.getSortedArry(arr);
对于(int i=0;ipackage com.test
公营索塔雷酒店{
private int[] getSortedArry(int[] arr){
int arrLen = arr.length;
int reversedArry[] = new int[arrLen];
System.out.println("array lenght: " +arr.length);
int j = 0;
for(int i=arrLen-1; i>=0; i--){
reversedArry[j] = arr[i];
j++;
}
System.out.print("\n");
return reversedArry;
}
public static void main(String[] args){
int arr[] = {10,2,3,4,5,12,23,43,45,65};
SortArray sortArray = new SortArray();
int reversedArry[] = sortArray.getSortedArry(arr);
for(int i=0;i<reversedArry.length;i++){
System.out.print(reversedArry[i] + " ");
}
}
private int[]getsortedary(int[]arr){
int arrLen=arr.length;
int reversedArry[]=新int[arrLen];
System.out.println(“数组长度:“+arr.length”);
int j=0;
对于(int i=arrLen-1;i>=0;i--){
反向ARRY[j]=arr[i];
j++;
}
系统输出打印(“\n”);
反向收益率;
}
公共静态void main(字符串[]args){
int arr[]={10,2,3,4,5,12,23,43,45,65};
SORTARAY SORTARAY=新SORTARAY();
int reversedArry[]=sortArray.getSortedArry(arr);
for(int i=0;在for循环中,您从0
迭代到arr.length-2
和reverse.length-2
。将循环更改为类似于for(int i=0;i
而不是for(int i=0;i
谢谢@JonnyHenly的帮助!在for循环中,您可以从0
迭代到arr.length-2
和reverse.length-2
。将循环更改为类似于for(int i=0;ifor(int i=0;i
谢谢@JonnyHenly的帮助!@JonnyHenly:Ya。但是他只创建了9个元素的数组。这就是为什么。i
这意味着i@KrutiPatel成功了。这确实是一个新手的错误。@JonnyHenly:Ya。但是他只创建了9个元素的数组。这就是为什么。i
这意味着iThanks@KrutiPatel成功了。这真是一个新手的错误。