我的代码输出有问题,无法理解为什么我得到这个输出。问题是:“给定n个元素的数组和整数k,0 我的输入应该如下所示: 我的输出应如下所示: 我运行时的输出是:import java.util.Scanner;
public class ShiftingArrayElements{
public static void main(String [] args) {
int x = 0;
int j=0;
Scanner sc = new Scanner(System.in);
String data = sc.nextLine();
x = sc.nextInt();
String tmpDataArray[] = data.split(" ");
int dataArray[] = new int[tmpDataArray.length];
for (int i = 0; i < dataArray.length; ++i) {
dataArray[i] = Integer.parseInt(tmpDataArray[i]);
}
if(x > dataArray.length)
x = x%dataArray.length;
int result[] = new int[dataArray.length];
for(int i=0; i < x; i++){
result[i] = dataArray[dataArray.length-x+i];
}
for(int i=x; i<dataArray.length; i++){
result[i] = dataArray[j];
j++;
}
System.out.print("Output:" + result + " ");
System.arraycopy( result, 0, dataArray, 0, dataArray.length );
sc.close();
}
}
3 4 5 19 10
2
Output: 5 19 10 3 4
Output:[I@42a57993
答案 0 :(得分:3)
在Java中,如果你写了类似
的东西System.out.print("Output:" + result + " ");
然后result
将通过调用内置数组类的toString()
方法转换为字符串,默认情况下只打印出一个不是特别易读的字符串,包含数组类型和数组的哈希码。在这种情况下,因为它是int
的数组,所以您会看到类型([I
)和哈希码(@42a57993
)。
如果您想查看人类可读的数组版本,请使用Arrays.toString
中的java.util
方法:
System.out.print("Output:" + Arrays.toString(result) + " ");
对于它的价值,有许多算法可以使用O(1)辅助存储器就地旋转阵列。你可能想要阅读它们 - 它们非常聪明!