这里原来提示:复制和修改阵列元件
写循环,其设定newScores到oldScores移位一旦离开,与复制到端部元件0。例如:如果oldScores = {10,20,30,40},那么newScores = {20,30,40,10}。
注意:这些活动可能会测试具有不同测试值的代码。该活动将执行两个测试,第一个测试是4元素数组(newScores = {10,20,30,40)),第二个测试是1元素数组(newScores = {199})。请参阅如何使用zyBooks。
另请注意:如果提交的代码尝试访问无效的数组元素,如4元素数组的newScores [9],则测试可能会产生奇怪的结果。或者测试可能会崩溃并报告“Program end never reached”,在这种情况下,系统不会打印导致报告消息的测试用例。
这是我的代码:
public class StudentScores {
public static void main (String [] args) {
final int SCORES_SIZE = 4;
int[] oldScores = new int[SCORES_SIZE];
int[] newScores = new int[SCORES_SIZE];
int i = 0;
oldScores[0] = 10;
oldScores[1] = 20;
oldScores[2] = 30;
oldScores[3] = 40;
for (i = 0; i < SCORES_SIZE - 1; i++) {
newScores[3] = oldScores[0];
newScores[i] = oldScores[i + 1];
}
for (i = 0; i < SCORES_SIZE; ++i) {
System.out.print(newScores[i] + " ");
}
System.out.println();
return;
}
}
这是我的输出:
测试对于oldScores = {10,20,30,40}
你的输出: 20 30 40 10
✖oldScores测试= {199}
预期输出:199
你的输出:0
为什么我会得到0为我的第二输出测试?
您是硬编码'3',而不是'SCORES_SIZE - 1'。 –
更改newscores [3]为newscores [SCORES_SIZE - 1]仍然给我0为第二个输出测试 – java2019
啊,这是因为'SCORES_SIZE - 1 == 0'和'0 < 0'立即失效。将'newScores [SCORES_SIZE - 1] = oldScores [0];'移到for循环之外。 –